{"id":"fed63a675ff9942c5abd2156119a4fa7","_format":"hh-sol-build-info-1","solcVersion":"0.6.6","solcLongVersion":"0.6.6+commit.6c089d02","input":{"language":"Solidity","sources":{"contracts/core/interfaces/IAstraCallee.sol":{"content":"pragma solidity >=0.5.0;\n\ninterface IAstraCallee {\n    function astraCall(address sender, uint amount0, uint amount1, bytes calldata data) external;\n}\n"},"contracts/core/interfaces/IAstraFactory.sol":{"content":"pragma solidity >=0.5.0;\n\ninterface IAstraFactory {\n    event PairCreated(address indexed token0, address indexed token1, address pair, uint);\n\n    function feeTo() external view returns (address);\n    function feeToSetter() external view returns (address);\n\n    function getPair(address tokenA, address tokenB) external view returns (address pair);\n    function allPairs(uint) external view returns (address pair);\n    function allPairsLength() external view returns (uint);\n\n    function createPair(address tokenA, address tokenB) external returns (address pair);\n\n    function setFeeTo(address) external;\n    function setFeeToSetter(address) external;\n}\n"},"contracts/core/interfaces/IAstraPair.sol":{"content":"pragma solidity >=0.5.0;\n\ninterface IAstraPair {\n    event Approval(address indexed owner, address indexed spender, uint value);\n    event Transfer(address indexed from, address indexed to, uint value);\n\n    function name() external pure returns (string memory);\n    function symbol() external pure returns (string memory);\n    function decimals() external pure returns (uint8);\n    function totalSupply() external view returns (uint);\n    function balanceOf(address owner) external view returns (uint);\n    function allowance(address owner, address spender) external view returns (uint);\n\n    function approve(address spender, uint value) external returns (bool);\n    function transfer(address to, uint value) external returns (bool);\n    function transferFrom(address from, address to, uint value) external returns (bool);\n\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\n    function nonces(address owner) external view returns (uint);\n\n    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\n\n    event Mint(address indexed sender, uint amount0, uint amount1);\n    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\n    event Swap(\n        address indexed sender,\n        uint amount0In,\n        uint amount1In,\n        uint amount0Out,\n        uint amount1Out,\n        address indexed to\n    );\n    event Sync(uint112 reserve0, uint112 reserve1);\n\n    function MINIMUM_LIQUIDITY() external pure returns (uint);\n    function factory() external view returns (address);\n    function token0() external view returns (address);\n    function token1() external view returns (address);\n    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\n    function price0CumulativeLast() external view returns (uint);\n    function price1CumulativeLast() external view returns (uint);\n    function kLast() external view returns (uint);\n\n    function mint(address to) external returns (uint liquidity);\n    function burn(address to) external returns (uint amount0, uint amount1);\n    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\n    function skim(address to) external;\n    function sync() external;\n\n    function initialize(address, address) external;\n}\n"},"contracts/periphery/AstraMigrator.sol":{"content":"pragma solidity =0.6.6;\n\nimport './libraries/TransferHelper.sol';\n\nimport './interfaces/IAstraMigrator.sol';\nimport './interfaces/V1/IAstraV1Factory.sol';\nimport './interfaces/V1/IAstraV1Exchange.sol';\nimport './interfaces/IAstraRouter01.sol';\nimport './interfaces/IERC20.sol';\n\ncontract AstraMigrator is IAstraMigrator {\n    IAstraV1Factory immutable factoryV1;\n    IAstraRouter01 immutable router;\n\n    constructor(address _factoryV1, address _router) public {\n        factoryV1 = IAstraV1Factory(_factoryV1);\n        router = IAstraRouter01(_router);\n    }\n\n    // needs to accept AMB from any v1 exchange and the router. ideally this could be enforced, as in the router,\n    // but it's not possible because it requires a call to the v1 factory, which takes too much gas\n    receive() external payable {}\n\n    function migrate(address token, uint amountTokenMin, uint amountAMBMin, address to, uint deadline)\n        external\n        override\n    {\n        IAstraV1Exchange exchangeV1 = IAstraV1Exchange(factoryV1.getExchange(token));\n        uint liquidityV1 = exchangeV1.balanceOf(msg.sender);\n        require(exchangeV1.transferFrom(msg.sender, address(this), liquidityV1), 'TRANSFER_FROM_FAILED');\n        (uint amountAMBV1, uint amountTokenV1) = exchangeV1.removeLiquidity(liquidityV1, 1, 1, uint(-1));\n        TransferHelper.safeApprove(token, address(router), amountTokenV1);\n        (uint amountTokenV2, uint amountAMBV2,) = router.addLiquidityAMB{value: amountAMBV1}(\n            token,\n            amountTokenV1,\n            amountTokenMin,\n            amountAMBMin,\n            to,\n            deadline\n        );\n        if (amountTokenV1 > amountTokenV2) {\n            TransferHelper.safeApprove(token, address(router), 0); // be a good blockchain citizen, reset allowance to 0\n            TransferHelper.safeTransfer(token, msg.sender, amountTokenV1 - amountTokenV2);\n        } else if (amountAMBV1 > amountAMBV2) {\n            // addLiquidityAMB guarantees that all of amountAMBV1 or amountTokenV1 will be used, hence this else is safe\n            TransferHelper.safeTransferAMB(msg.sender, amountAMBV1 - amountAMBV2);\n        }\n    }\n}\n"},"contracts/periphery/AstraRouter01.sol":{"content":"pragma solidity =0.6.6;\n\nimport \"../core/interfaces/IAstraFactory.sol\";\nimport \"./libraries/TransferHelper.sol\";\n\nimport \"./libraries/AstraLibrary.sol\";\nimport \"./interfaces/IAstraRouter01.sol\";\nimport \"./interfaces/IERC20.sol\";\nimport \"./interfaces/ISAMB.sol\";\n\ncontract AstraRouter01 is IAstraRouter01 {\n    address public immutable override factory;\n    address public immutable override SAMB;\n\n    modifier ensure(uint256 deadline) {\n        require(deadline >= block.timestamp, \"AstraRouter: EXPIRED\");\n        _;\n    }\n\n    constructor(address _factory, address _SAMB) public {\n        factory = _factory;\n        SAMB = _SAMB;\n    }\n\n    receive() external payable {\n        assert(msg.sender == SAMB); // only accept AMB via fallback from the SAMB contract\n    }\n\n    // **** ADD LIQUIDITY ****\n    function _addLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 amountADesired,\n        uint256 amountBDesired,\n        uint256 amountAMin,\n        uint256 amountBMin\n    ) private returns (uint256 amountA, uint256 amountB) {\n        // create the pair if it doesn't exist yet\n        if (IAstraFactory(factory).getPair(tokenA, tokenB) == address(0)) {\n            IAstraFactory(factory).createPair(tokenA, tokenB);\n        }\n        (uint256 reserveA, uint256 reserveB) = AstraLibrary.getReserves(\n            factory,\n            tokenA,\n            tokenB\n        );\n        if (reserveA == 0 && reserveB == 0) {\n            (amountA, amountB) = (amountADesired, amountBDesired);\n        } else {\n            uint256 amountBOptimal = AstraLibrary.quote(\n                amountADesired,\n                reserveA,\n                reserveB\n            );\n            if (amountBOptimal <= amountBDesired) {\n                require(\n                    amountBOptimal >= amountBMin,\n                    \"AstraRouter: INSUFFICIENT_B_AMOUNT\"\n                );\n                (amountA, amountB) = (amountADesired, amountBOptimal);\n            } else {\n                uint256 amountAOptimal = AstraLibrary.quote(\n                    amountBDesired,\n                    reserveB,\n                    reserveA\n                );\n                assert(amountAOptimal <= amountADesired);\n                require(\n                    amountAOptimal >= amountAMin,\n                    \"AstraRouter: INSUFFICIENT_A_AMOUNT\"\n                );\n                (amountA, amountB) = (amountAOptimal, amountBDesired);\n            }\n        }\n    }\n\n    function addLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 amountADesired,\n        uint256 amountBDesired,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline\n    )\n        external\n        override\n        ensure(deadline)\n        returns (\n            uint256 amountA,\n            uint256 amountB,\n            uint256 liquidity\n        )\n    {\n        (amountA, amountB) = _addLiquidity(\n            tokenA,\n            tokenB,\n            amountADesired,\n            amountBDesired,\n            amountAMin,\n            amountBMin\n        );\n        address pair = AstraLibrary.pairFor(factory, tokenA, tokenB);\n        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\n        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\n        liquidity = IAstraPair(pair).mint(to);\n    }\n\n    function addLiquidityAMB(\n        address token,\n        uint256 amountTokenDesired,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline\n    )\n        external\n        payable\n        override\n        ensure(deadline)\n        returns (\n            uint256 amountToken,\n            uint256 amountAMB,\n            uint256 liquidity\n        )\n    {\n        (amountToken, amountAMB) = _addLiquidity(\n            token,\n            SAMB,\n            amountTokenDesired,\n            msg.value,\n            amountTokenMin,\n            amountAMBMin\n        );\n        address pair = AstraLibrary.pairFor(factory, token, SAMB);\n        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\n        ISAMB(SAMB).deposit{value: amountAMB}();\n        assert(ISAMB(SAMB).transfer(pair, amountAMB));\n        liquidity = IAstraPair(pair).mint(to);\n        if (msg.value > amountAMB)\n            TransferHelper.safeTransferAMB(msg.sender, msg.value - amountAMB); // refund dust amb, if any\n    }\n\n    // **** REMOVE LIQUIDITY ****\n    function removeLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 liquidity,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline\n    )\n        public\n        override\n        ensure(deadline)\n        returns (uint256 amountA, uint256 amountB)\n    {\n        address pair = AstraLibrary.pairFor(factory, tokenA, tokenB);\n        IAstraPair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\n        (uint256 amount0, uint256 amount1) = IAstraPair(pair).burn(to);\n        (address token0, ) = AstraLibrary.sortTokens(tokenA, tokenB);\n        (amountA, amountB) = tokenA == token0\n            ? (amount0, amount1)\n            : (amount1, amount0);\n        require(\n            amountA >= amountAMin,\n            \"AstraRouter: INSUFFICIENT_A_AMOUNT\"\n        );\n        require(\n            amountB >= amountBMin,\n            \"AstraRouter: INSUFFICIENT_B_AMOUNT\"\n        );\n    }\n\n    function removeLiquidityAMB(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline\n    )\n        public\n        override\n        ensure(deadline)\n        returns (uint256 amountToken, uint256 amountAMB)\n    {\n        (amountToken, amountAMB) = removeLiquidity(\n            token,\n            SAMB,\n            liquidity,\n            amountTokenMin,\n            amountAMBMin,\n            address(this),\n            deadline\n        );\n        TransferHelper.safeTransfer(token, to, amountToken);\n        ISAMB(SAMB).withdraw(amountAMB);\n        TransferHelper.safeTransferAMB(to, amountAMB);\n    }\n\n    function removeLiquidityWithPermit(\n        address tokenA,\n        address tokenB,\n        uint256 liquidity,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external override returns (uint256 amountA, uint256 amountB) {\n        address pair = AstraLibrary.pairFor(factory, tokenA, tokenB);\n        uint256 value = approveMax ? uint256(-1) : liquidity;\n        IAstraPair(pair).permit(\n            msg.sender,\n            address(this),\n            value,\n            deadline,\n            v,\n            r,\n            s\n        );\n        (amountA, amountB) = removeLiquidity(\n            tokenA,\n            tokenB,\n            liquidity,\n            amountAMin,\n            amountBMin,\n            to,\n            deadline\n        );\n    }\n\n    function removeLiquidityAMBWithPermit(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external override returns (uint256 amountToken, uint256 amountAMB) {\n        address pair = AstraLibrary.pairFor(factory, token, SAMB);\n        uint256 value = approveMax ? uint256(-1) : liquidity;\n        IAstraPair(pair).permit(\n            msg.sender,\n            address(this),\n            value,\n            deadline,\n            v,\n            r,\n            s\n        );\n        (amountToken, amountAMB) = removeLiquidityAMB(\n            token,\n            liquidity,\n            amountTokenMin,\n            amountAMBMin,\n            to,\n            deadline\n        );\n    }\n\n    // **** SWAP ****\n    // requires the initial amount to have already been sent to the first pair\n    function _swap(\n        uint256[] memory amounts,\n        address[] memory path,\n        address _to\n    ) private {\n        for (uint256 i; i < path.length - 1; i++) {\n            (address input, address output) = (path[i], path[i + 1]);\n            (address token0, ) = AstraLibrary.sortTokens(input, output);\n            uint256 amountOut = amounts[i + 1];\n            (uint256 amount0Out, uint256 amount1Out) = input == token0\n                ? (uint256(0), amountOut)\n                : (amountOut, uint256(0));\n            address to = i < path.length - 2\n                ? AstraLibrary.pairFor(factory, output, path[i + 2])\n                : _to;\n            IAstraPair(AstraLibrary.pairFor(factory, input, output))\n                .swap(amount0Out, amount1Out, to, new bytes(0));\n        }\n    }\n\n    function swapExactTokensForTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external override ensure(deadline) returns (uint256[] memory amounts) {\n        amounts = AstraLibrary.getAmountsOut(factory, amountIn, path);\n        require(\n            amounts[amounts.length - 1] >= amountOutMin,\n            \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            AstraLibrary.pairFor(factory, path[0], path[1]),\n            amounts[0]\n        );\n        _swap(amounts, path, to);\n    }\n\n    function swapTokensForExactTokens(\n        uint256 amountOut,\n        uint256 amountInMax,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external override ensure(deadline) returns (uint256[] memory amounts) {\n        amounts = AstraLibrary.getAmountsIn(factory, amountOut, path);\n        require(\n            amounts[0] <= amountInMax,\n            \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\"\n        );\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            AstraLibrary.pairFor(factory, path[0], path[1]),\n            amounts[0]\n        );\n        _swap(amounts, path, to);\n    }\n\n    function swapExactAMBForTokens(\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        payable\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        require(path[0] == SAMB, \"AstraRouter: INVALID_PATH\");\n        amounts = AstraLibrary.getAmountsOut(factory, msg.value, path);\n        require(\n            amounts[amounts.length - 1] >= amountOutMin,\n            \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n        ISAMB(SAMB).deposit{value: amounts[0]}();\n        assert(\n            ISAMB(SAMB).transfer(\n                AstraLibrary.pairFor(factory, path[0], path[1]),\n                amounts[0]\n            )\n        );\n        _swap(amounts, path, to);\n    }\n\n    function swapTokensForExactAMB(\n        uint256 amountOut,\n        uint256 amountInMax,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external override ensure(deadline) returns (uint256[] memory amounts) {\n        require(path[path.length - 1] == SAMB, \"AstraRouter: INVALID_PATH\");\n        amounts = AstraLibrary.getAmountsIn(factory, amountOut, path);\n        require(\n            amounts[0] <= amountInMax,\n            \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\"\n        );\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            AstraLibrary.pairFor(factory, path[0], path[1]),\n            amounts[0]\n        );\n        _swap(amounts, path, address(this));\n        ISAMB(SAMB).withdraw(amounts[amounts.length - 1]);\n        TransferHelper.safeTransferAMB(to, amounts[amounts.length - 1]);\n    }\n\n    function swapExactTokensForAMB(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external override ensure(deadline) returns (uint256[] memory amounts) {\n        require(path[path.length - 1] == SAMB, \"AstraRouter: INVALID_PATH\");\n        amounts = AstraLibrary.getAmountsOut(factory, amountIn, path);\n        require(\n            amounts[amounts.length - 1] >= amountOutMin,\n            \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            AstraLibrary.pairFor(factory, path[0], path[1]),\n            amounts[0]\n        );\n        _swap(amounts, path, address(this));\n        ISAMB(SAMB).withdraw(amounts[amounts.length - 1]);\n        TransferHelper.safeTransferAMB(to, amounts[amounts.length - 1]);\n    }\n\n    function swapAMBForExactTokens(\n        uint256 amountOut,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        payable\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        require(path[0] == SAMB, \"AstraRouter: INVALID_PATH\");\n        amounts = AstraLibrary.getAmountsIn(factory, amountOut, path);\n        require(\n            amounts[0] <= msg.value,\n            \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\"\n        );\n        ISAMB(SAMB).deposit{value: amounts[0]}();\n        assert(\n            ISAMB(SAMB).transfer(\n                AstraLibrary.pairFor(factory, path[0], path[1]),\n                amounts[0]\n            )\n        );\n        _swap(amounts, path, to);\n        if (msg.value > amounts[0])\n            TransferHelper.safeTransferAMB(msg.sender, msg.value - amounts[0]); // refund dust amb, if any\n    }\n\n    function quote(\n        uint256 amountA,\n        uint256 reserveA,\n        uint256 reserveB\n    ) public pure override returns (uint256 amountB) {\n        return AstraLibrary.quote(amountA, reserveA, reserveB);\n    }\n\n    function getAmountOut(\n        uint256 amountIn,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) public pure override returns (uint256 amountOut) {\n        return AstraLibrary.getAmountOut(amountIn, reserveIn, reserveOut);\n    }\n\n    function getAmountIn(\n        uint256 amountOut,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) public pure override returns (uint256 amountIn) {\n        return AstraLibrary.getAmountOut(amountOut, reserveIn, reserveOut);\n    }\n\n    function getAmountsOut(uint256 amountIn, address[] memory path)\n        public\n        view\n        override\n        returns (uint256[] memory amounts)\n    {\n        return AstraLibrary.getAmountsOut(factory, amountIn, path);\n    }\n\n    function getAmountsIn(uint256 amountOut, address[] memory path)\n        public\n        view\n        override\n        returns (uint256[] memory amounts)\n    {\n        return AstraLibrary.getAmountsIn(factory, amountOut, path);\n    }\n}\n"},"contracts/periphery/AstraRouter02.sol":{"content":"pragma solidity =0.6.6;\n\nimport \"../core/interfaces/IAstraFactory.sol\";\nimport \"./libraries/TransferHelper.sol\";\n\nimport \"./interfaces/IAstraRouter02.sol\";\nimport \"./libraries/AstraLibrary.sol\";\nimport \"./libraries/SafeMath.sol\";\nimport \"./interfaces/IERC20.sol\";\nimport \"./interfaces/ISAMB.sol\";\n\ncontract AstraRouter02 is IAstraRouter02 {\n    using SafeMath for uint256;\n    address public override factory;\n    address public override SAMB;\n\n    modifier ensure(uint256 deadline) {\n        require(deadline >= block.timestamp, \"AstraRouter: EXPIRED\");\n        _;\n    }\n\n    constructor(address _factory, address _SAMB) public payable {\n        factory = _factory;\n        SAMB = _SAMB;\n    }\n\n    receive() external payable {\n        assert(msg.sender == SAMB); // only accept AMB via fallback from the SAMB contract\n    }\n\n    // **** ADD LIQUIDITY ****\n    function _addLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 amountADesired,\n        uint256 amountBDesired,\n        uint256 amountAMin,\n        uint256 amountBMin\n    ) internal virtual returns (uint256 amountA, uint256 amountB) {\n        // create the pair if it doesn't exist yet\n        if (IAstraFactory(factory).getPair(tokenA, tokenB) == address(0)) {\n            IAstraFactory(factory).createPair(tokenA, tokenB);\n        }\n        (uint256 reserveA, uint256 reserveB) = AstraLibrary.getReserves(\n            factory,\n            tokenA,\n            tokenB\n        );\n        if (reserveA == 0 && reserveB == 0) {\n            (amountA, amountB) = (amountADesired, amountBDesired);\n        } else {\n            uint256 amountBOptimal = AstraLibrary.quote(\n                amountADesired,\n                reserveA,\n                reserveB\n            );\n            if (amountBOptimal <= amountBDesired) {\n                require(\n                    amountBOptimal >= amountBMin,\n                    \"AstraRouter: INSUFFICIENT_B_AMOUNT\"\n                );\n                (amountA, amountB) = (amountADesired, amountBOptimal);\n            } else {\n                uint256 amountAOptimal = AstraLibrary.quote(\n                    amountBDesired,\n                    reserveB,\n                    reserveA\n                );\n                assert(amountAOptimal <= amountADesired);\n                require(\n                    amountAOptimal >= amountAMin,\n                    \"AstraRouter: INSUFFICIENT_A_AMOUNT\"\n                );\n                (amountA, amountB) = (amountAOptimal, amountBDesired);\n            }\n        }\n    }\n\n    function addLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 amountADesired,\n        uint256 amountBDesired,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline\n    )\n        external\n        virtual\n        override\n        ensure(deadline)\n        returns (\n            uint256 amountA,\n            uint256 amountB,\n            uint256 liquidity\n        )\n    {\n        (amountA, amountB) = _addLiquidity(\n            tokenA,\n            tokenB,\n            amountADesired,\n            amountBDesired,\n            amountAMin,\n            amountBMin\n        );\n        address pair = AstraLibrary.pairFor(factory, tokenA, tokenB);\n        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\n        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\n        liquidity = IAstraPair(pair).mint(to);\n    }\n\n    function addLiquidityAMB(\n        address token,\n        uint256 amountTokenDesired,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline\n    )\n        external\n        payable\n        virtual\n        override\n        ensure(deadline)\n        returns (\n            uint256 amountToken,\n            uint256 amountAMB,\n            uint256 liquidity\n        )\n    {\n        (amountToken, amountAMB) = _addLiquidity(\n            token,\n            SAMB,\n            amountTokenDesired,\n            msg.value,\n            amountTokenMin,\n            amountAMBMin\n        );\n        address pair = AstraLibrary.pairFor(factory, token, SAMB);\n        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\n        ISAMB(SAMB).deposit{value: amountAMB}();\n        assert(ISAMB(SAMB).transfer(pair, amountAMB));\n        liquidity = IAstraPair(pair).mint(to);\n        // refund dust amb, if any\n        if (msg.value > amountAMB)\n            TransferHelper.safeTransferAMB(msg.sender, msg.value - amountAMB);\n    }\n\n    // **** REMOVE LIQUIDITY ****\n    function removeLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 liquidity,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline\n    )\n        public\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256 amountA, uint256 amountB)\n    {\n        address pair = AstraLibrary.pairFor(factory, tokenA, tokenB);\n        IAstraPair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\n        (uint256 amount0, uint256 amount1) = IAstraPair(pair).burn(to);\n        (address token0, ) = AstraLibrary.sortTokens(tokenA, tokenB);\n        (amountA, amountB) = tokenA == token0\n            ? (amount0, amount1)\n            : (amount1, amount0);\n        require(\n            amountA >= amountAMin,\n            \"AstraRouter: INSUFFICIENT_A_AMOUNT\"\n        );\n        require(\n            amountB >= amountBMin,\n            \"AstraRouter: INSUFFICIENT_B_AMOUNT\"\n        );\n    }\n\n    function removeLiquidityAMB(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline\n    )\n        public\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256 amountToken, uint256 amountAMB)\n    {\n        (amountToken, amountAMB) = removeLiquidity(\n            token,\n            SAMB,\n            liquidity,\n            amountTokenMin,\n            amountAMBMin,\n            address(this),\n            deadline\n        );\n        TransferHelper.safeTransfer(token, to, amountToken);\n        ISAMB(SAMB).withdraw(amountAMB);\n        TransferHelper.safeTransferAMB(to, amountAMB);\n    }\n\n    function removeLiquidityWithPermit(\n        address tokenA,\n        address tokenB,\n        uint256 liquidity,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external virtual override returns (uint256 amountA, uint256 amountB) {\n        address pair = AstraLibrary.pairFor(factory, tokenA, tokenB);\n        uint256 value = approveMax ? uint256(-1) : liquidity;\n        IAstraPair(pair).permit(\n            msg.sender,\n            address(this),\n            value,\n            deadline,\n            v,\n            r,\n            s\n        );\n        (amountA, amountB) = removeLiquidity(\n            tokenA,\n            tokenB,\n            liquidity,\n            amountAMin,\n            amountBMin,\n            to,\n            deadline\n        );\n    }\n\n    function removeLiquidityAMBWithPermit(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    )\n        external\n        virtual\n        override\n        returns (uint256 amountToken, uint256 amountAMB)\n    {\n        address pair = AstraLibrary.pairFor(factory, token, SAMB);\n        uint256 value = approveMax ? uint256(-1) : liquidity;\n        IAstraPair(pair).permit(\n            msg.sender,\n            address(this),\n            value,\n            deadline,\n            v,\n            r,\n            s\n        );\n        (amountToken, amountAMB) = removeLiquidityAMB(\n            token,\n            liquidity,\n            amountTokenMin,\n            amountAMBMin,\n            to,\n            deadline\n        );\n    }\n\n    // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\n    function removeLiquidityAMBSupportingFeeOnTransferTokens(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline\n    ) public virtual override ensure(deadline) returns (uint256 amountAMB) {\n        (, amountAMB) = removeLiquidity(\n            token,\n            SAMB,\n            liquidity,\n            amountTokenMin,\n            amountAMBMin,\n            address(this),\n            deadline\n        );\n        TransferHelper.safeTransfer(\n            token,\n            to,\n            IERC20(token).balanceOf(address(this))\n        );\n        ISAMB(SAMB).withdraw(amountAMB);\n        TransferHelper.safeTransferAMB(to, amountAMB);\n    }\n\n    function removeLiquidityAMBWithPermitSupportingFeeOnTransferTokens(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external virtual override returns (uint256 amountAMB) {\n        address pair = AstraLibrary.pairFor(factory, token, SAMB);\n        uint256 value = approveMax ? uint256(-1) : liquidity;\n        IAstraPair(pair).permit(\n            msg.sender,\n            address(this),\n            value,\n            deadline,\n            v,\n            r,\n            s\n        );\n        amountAMB = removeLiquidityAMBSupportingFeeOnTransferTokens(\n            token,\n            liquidity,\n            amountTokenMin,\n            amountAMBMin,\n            to,\n            deadline\n        );\n    }\n\n    // **** SWAP ****\n    // requires the initial amount to have already been sent to the first pair\n    function _swap(\n        uint256[] memory amounts,\n        address[] memory path,\n        address _to\n    ) internal virtual {\n        for (uint256 i; i < path.length - 1; i++) {\n            (address input, address output) = (path[i], path[i + 1]);\n            (address token0, ) = AstraLibrary.sortTokens(input, output);\n            uint256 amountOut = amounts[i + 1];\n            (uint256 amount0Out, uint256 amount1Out) = input == token0\n                ? (uint256(0), amountOut)\n                : (amountOut, uint256(0));\n            address to = i < path.length - 2\n                ? AstraLibrary.pairFor(factory, output, path[i + 2])\n                : _to;\n            IAstraPair(AstraLibrary.pairFor(factory, input, output))\n                .swap(amount0Out, amount1Out, to, new bytes(0));\n        }\n    }\n\n    function swapExactTokensForTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        amounts = AstraLibrary.getAmountsOut(factory, amountIn, path);\n        require(\n            amounts[amounts.length - 1] >= amountOutMin,\n            \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            AstraLibrary.pairFor(factory, path[0], path[1]),\n            amounts[0]\n        );\n        _swap(amounts, path, to);\n    }\n\n    function swapTokensForExactTokens(\n        uint256 amountOut,\n        uint256 amountInMax,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        amounts = AstraLibrary.getAmountsIn(factory, amountOut, path);\n        require(\n            amounts[0] <= amountInMax,\n            \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\"\n        );\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            AstraLibrary.pairFor(factory, path[0], path[1]),\n            amounts[0]\n        );\n        _swap(amounts, path, to);\n    }\n\n    function swapExactAMBForTokens(\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        payable\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        require(path[0] == SAMB, \"AstraRouter: INVALID_PATH\");\n        amounts = AstraLibrary.getAmountsOut(factory, msg.value, path);\n        require(\n            amounts[amounts.length - 1] >= amountOutMin,\n            \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n        ISAMB(SAMB).deposit{value: amounts[0]}();\n        assert(\n            ISAMB(SAMB).transfer(\n                AstraLibrary.pairFor(factory, path[0], path[1]),\n                amounts[0]\n            )\n        );\n        _swap(amounts, path, to);\n    }\n\n    function swapTokensForExactAMB(\n        uint256 amountOut,\n        uint256 amountInMax,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        require(path[path.length - 1] == SAMB, \"AstraRouter: INVALID_PATH\");\n        amounts = AstraLibrary.getAmountsIn(factory, amountOut, path);\n        require(\n            amounts[0] <= amountInMax,\n            \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\"\n        );\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            AstraLibrary.pairFor(factory, path[0], path[1]),\n            amounts[0]\n        );\n        _swap(amounts, path, address(this));\n        ISAMB(SAMB).withdraw(amounts[amounts.length - 1]);\n        TransferHelper.safeTransferAMB(to, amounts[amounts.length - 1]);\n    }\n\n    function swapExactTokensForAMB(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        require(path[path.length - 1] == SAMB, \"AstraRouter: INVALID_PATH\");\n        amounts = AstraLibrary.getAmountsOut(factory, amountIn, path);\n        require(\n            amounts[amounts.length - 1] >= amountOutMin,\n            \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            AstraLibrary.pairFor(factory, path[0], path[1]),\n            amounts[0]\n        );\n        _swap(amounts, path, address(this));\n        ISAMB(SAMB).withdraw(amounts[amounts.length - 1]);\n        TransferHelper.safeTransferAMB(to, amounts[amounts.length - 1]);\n    }\n\n    function swapAMBForExactTokens(\n        uint256 amountOut,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    )\n        external\n        payable\n        virtual\n        override\n        ensure(deadline)\n        returns (uint256[] memory amounts)\n    {\n        require(path[0] == SAMB, \"AstraRouter: INVALID_PATH\");\n        amounts = AstraLibrary.getAmountsIn(factory, amountOut, path);\n        require(\n            amounts[0] <= msg.value,\n            \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\"\n        );\n        ISAMB(SAMB).deposit{value: amounts[0]}();\n        assert(\n            ISAMB(SAMB).transfer(\n                AstraLibrary.pairFor(factory, path[0], path[1]),\n                amounts[0]\n            )\n        );\n        _swap(amounts, path, to);\n        // refund dust amb, if any\n        if (msg.value > amounts[0])\n            TransferHelper.safeTransferAMB(msg.sender, msg.value - amounts[0]);\n    }\n\n    // **** SWAP (supporting fee-on-transfer tokens) ****\n    // requires the initial amount to have already been sent to the first pair\n    function _swapSupportingFeeOnTransferTokens(\n        address[] memory path,\n        address _to\n    ) internal virtual {\n        for (uint256 i; i < path.length - 1; i++) {\n            (address input, address output) = (path[i], path[i + 1]);\n            (address token0, ) = AstraLibrary.sortTokens(input, output);\n            IAstraPair pair = IAstraPair(\n                AstraLibrary.pairFor(factory, input, output)\n            );\n            uint256 amountInput;\n            uint256 amountOutput;\n            {\n                // scope to avoid stack too deep errors\n                (uint256 reserve0, uint256 reserve1, ) = pair.getReserves();\n                (uint256 reserveInput, uint256 reserveOutput) = input == token0\n                    ? (reserve0, reserve1)\n                    : (reserve1, reserve0);\n                amountInput = IERC20(input).balanceOf(address(pair)).sub(\n                    reserveInput\n                );\n                amountOutput = AstraLibrary.getAmountOut(\n                    amountInput,\n                    reserveInput,\n                    reserveOutput\n                );\n            }\n            (uint256 amount0Out, uint256 amount1Out) = input == token0\n                ? (uint256(0), amountOutput)\n                : (amountOutput, uint256(0));\n            address to = i < path.length - 2\n                ? AstraLibrary.pairFor(factory, output, path[i + 2])\n                : _to;\n            pair.swap(amount0Out, amount1Out, to, new bytes(0));\n        }\n    }\n\n    function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external virtual override ensure(deadline) {\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            AstraLibrary.pairFor(factory, path[0], path[1]),\n            amountIn\n        );\n        uint256 balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\n        _swapSupportingFeeOnTransferTokens(path, to);\n        require(\n            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >=\n                amountOutMin,\n            \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n    }\n\n    function swapExactAMBForTokensSupportingFeeOnTransferTokens(\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external payable virtual override ensure(deadline) {\n        require(path[0] == SAMB, \"AstraRouter: INVALID_PATH\");\n        uint256 amountIn = msg.value;\n        ISAMB(SAMB).deposit{value: amountIn}();\n        assert(\n            ISAMB(SAMB).transfer(\n                AstraLibrary.pairFor(factory, path[0], path[1]),\n                amountIn\n            )\n        );\n        uint256 balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\n        _swapSupportingFeeOnTransferTokens(path, to);\n        require(\n            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >=\n                amountOutMin,\n            \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n    }\n\n    function swapExactTokensForAMBSupportingFeeOnTransferTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external virtual override ensure(deadline) {\n        require(path[path.length - 1] == SAMB, \"AstraRouter: INVALID_PATH\");\n        TransferHelper.safeTransferFrom(\n            path[0],\n            msg.sender,\n            AstraLibrary.pairFor(factory, path[0], path[1]),\n            amountIn\n        );\n        _swapSupportingFeeOnTransferTokens(path, address(this));\n        uint256 amountOut = IERC20(SAMB).balanceOf(address(this));\n        require(\n            amountOut >= amountOutMin,\n            \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\"\n        );\n        ISAMB(SAMB).withdraw(amountOut);\n        TransferHelper.safeTransferAMB(to, amountOut);\n    }\n\n    // **** LIBRARY FUNCTIONS ****\n    function quote(\n        uint256 amountA,\n        uint256 reserveA,\n        uint256 reserveB\n    ) public pure virtual override returns (uint256 amountB) {\n        return AstraLibrary.quote(amountA, reserveA, reserveB);\n    }\n\n    function getAmountOut(\n        uint256 amountIn,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) public pure virtual override returns (uint256 amountOut) {\n        return AstraLibrary.getAmountOut(amountIn, reserveIn, reserveOut);\n    }\n\n    function getAmountIn(\n        uint256 amountOut,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) public pure virtual override returns (uint256 amountIn) {\n        return AstraLibrary.getAmountIn(amountOut, reserveIn, reserveOut);\n    }\n\n    function getAmountsOut(uint256 amountIn, address[] memory path)\n        public\n        view\n        virtual\n        override\n        returns (uint256[] memory amounts)\n    {\n        return AstraLibrary.getAmountsOut(factory, amountIn, path);\n    }\n\n    function getAmountsIn(uint256 amountOut, address[] memory path)\n        public\n        view\n        virtual\n        override\n        returns (uint256[] memory amounts)\n    {\n        return AstraLibrary.getAmountsIn(factory, amountOut, path);\n    }\n}\n"},"contracts/periphery/examples/ExampleComputeLiquidityValue.sol":{"content":"pragma solidity =0.6.6;\n\nimport '../libraries/AstraLiquidityMathLibrary.sol';\n\ncontract ExampleComputeLiquidityValue {\n    using SafeMath for uint256;\n\n    address public immutable factory;\n\n    constructor(address factory_) public {\n        factory = factory_;\n    }\n\n    // see AstraLiquidityMathLibrary#getReservesAfterArbitrage\n    function getReservesAfterArbitrage(\n        address tokenA,\n        address tokenB,\n        uint256 truePriceTokenA,\n        uint256 truePriceTokenB\n    ) external view returns (uint256 reserveA, uint256 reserveB) {\n        return AstraLiquidityMathLibrary.getReservesAfterArbitrage(\n            factory,\n            tokenA,\n            tokenB,\n            truePriceTokenA,\n            truePriceTokenB\n        );\n    }\n\n    // see AstraLiquidityMathLibrary#getLiquidityValue\n    function getLiquidityValue(\n        address tokenA,\n        address tokenB,\n        uint256 liquidityAmount\n    ) external view returns (\n        uint256 tokenAAmount,\n        uint256 tokenBAmount\n    ) {\n        return AstraLiquidityMathLibrary.getLiquidityValue(\n            factory,\n            tokenA,\n            tokenB,\n            liquidityAmount\n        );\n    }\n\n    // see AstraLiquidityMathLibrary#getLiquidityValueAfterArbitrageToPrice\n    function getLiquidityValueAfterArbitrageToPrice(\n        address tokenA,\n        address tokenB,\n        uint256 truePriceTokenA,\n        uint256 truePriceTokenB,\n        uint256 liquidityAmount\n    ) external view returns (\n        uint256 tokenAAmount,\n        uint256 tokenBAmount\n    ) {\n        return AstraLiquidityMathLibrary.getLiquidityValueAfterArbitrageToPrice(\n            factory,\n            tokenA,\n            tokenB,\n            truePriceTokenA,\n            truePriceTokenB,\n            liquidityAmount\n        );\n    }\n\n    // test function to measure the gas cost of the above function\n    function getGasCostOfGetLiquidityValueAfterArbitrageToPrice(\n        address tokenA,\n        address tokenB,\n        uint256 truePriceTokenA,\n        uint256 truePriceTokenB,\n        uint256 liquidityAmount\n    ) external view returns (\n        uint256\n    ) {\n        uint gasBefore = gasleft();\n        AstraLiquidityMathLibrary.getLiquidityValueAfterArbitrageToPrice(\n            factory,\n            tokenA,\n            tokenB,\n            truePriceTokenA,\n            truePriceTokenB,\n            liquidityAmount\n        );\n        uint gasAfter = gasleft();\n        return gasBefore - gasAfter;\n    }\n}\n"},"contracts/periphery/examples/ExampleFlashSwap.sol":{"content":"pragma solidity =0.6.6;\n\nimport '../../core/interfaces/IAstraCallee.sol';\n\nimport '../libraries/AstraLibrary.sol';\nimport '../interfaces/V1/IAstraV1Factory.sol';\nimport '../interfaces/V1/IAstraV1Exchange.sol';\nimport '../interfaces/IAstraRouter01.sol';\nimport '../interfaces/IERC20.sol';\nimport '../interfaces/ISAMB.sol';\n\ncontract ExampleFlashSwap is IAstraCallee {\n    IAstraV1Factory immutable factoryV1;\n    address immutable factory;\n    ISAMB immutable SAMB;\n\n    constructor(address _factory, address _factoryV1, address router) public {\n        factoryV1 = IAstraV1Factory(_factoryV1);\n        factory = _factory;\n        SAMB = ISAMB(IAstraRouter01(router).SAMB());\n    }\n\n    // needs to accept AMB from any V1 exchange and SAMB. ideally this could be enforced, as in the router,\n    // but it's not possible because it requires a call to the v1 factory, which takes too much gas\n    receive() external payable {}\n\n    // gets tokens/SAMB via a V2 flash swap, swaps for the AMB/tokens on V1, repays V2, and keeps the rest!\n    function astraCall(address sender, uint amount0, uint amount1, bytes calldata data) external override {\n        address[] memory path = new address[](2);\n        uint amountToken;\n        uint amountAMB;\n        { // scope for token{0,1}, avoids stack too deep errors\n        address token0 = IAstraPair(msg.sender).token0();\n        address token1 = IAstraPair(msg.sender).token1();\n        assert(msg.sender == AstraLibrary.pairFor(factory, token0, token1)); // ensure that msg.sender is actually a V2 pair\n        assert(amount0 == 0 || amount1 == 0); // this strategy is unidirectional\n        path[0] = amount0 == 0 ? token0 : token1;\n        path[1] = amount0 == 0 ? token1 : token0;\n        amountToken = token0 == address(SAMB) ? amount1 : amount0;\n        amountAMB = token0 == address(SAMB) ? amount0 : amount1;\n        }\n\n        assert(path[0] == address(SAMB) || path[1] == address(SAMB)); // this strategy only works with a V2 SAMB pair\n        IERC20 token = IERC20(path[0] == address(SAMB) ? path[1] : path[0]);\n        IAstraV1Exchange exchangeV1 = IAstraV1Exchange(factoryV1.getExchange(address(token))); // get V1 exchange\n\n        if (amountToken > 0) {\n            (uint minAMB) = abi.decode(data, (uint)); // slippage parameter for V1, passed in by caller\n            token.approve(address(exchangeV1), amountToken);\n            uint amountReceived = exchangeV1.tokenToAMBSwapInput(amountToken, minAMB, uint(-1));\n            uint amountRequired = AstraLibrary.getAmountsIn(factory, amountToken, path)[0];\n            assert(amountReceived > amountRequired); // fail if we didn't get enough AMB back to repay our flash loan\n            SAMB.deposit{value: amountRequired}();\n            assert(SAMB.transfer(msg.sender, amountRequired)); // return SAMB to V2 pair\n            (bool success,) = sender.call{value: amountReceived - amountRequired}(new bytes(0)); // keep the rest! (AMB)\n            assert(success);\n        } else {\n            (uint minTokens) = abi.decode(data, (uint)); // slippage parameter for V1, passed in by caller\n            SAMB.withdraw(amountAMB);\n            uint amountReceived = exchangeV1.AMBToTokenSwapInput{value: amountAMB}(minTokens, uint(-1));\n            uint amountRequired = AstraLibrary.getAmountsIn(factory, amountAMB, path)[0];\n            assert(amountReceived > amountRequired); // fail if we didn't get enough tokens back to repay our flash loan\n            assert(token.transfer(msg.sender, amountRequired)); // return tokens to V2 pair\n            assert(token.transfer(sender, amountReceived - amountRequired)); // keep the rest! (tokens)\n        }\n    }\n}\n"},"contracts/periphery/examples/ExampleOracleSimple.sol":{"content":"pragma solidity =0.6.6;\n\nimport '../../core/interfaces/IAstraFactory.sol';\nimport '../../core/interfaces/IAstraPair.sol';\nimport '../libraries/FixedPoint.sol';\n\nimport '../libraries/AstraOracleLibrary.sol';\nimport '../libraries/AstraLibrary.sol';\n\n// fixed window oracle that recomputes the average price for the entire period once every period\n// note that the price average is only guaranteed to be over at least 1 period, but may be over a longer period\ncontract ExampleOracleSimple {\n    using FixedPoint for *;\n\n    uint public constant PERIOD = 24 hours;\n\n    IAstraPair immutable pair;\n    address public immutable token0;\n    address public immutable token1;\n\n    uint    public price0CumulativeLast;\n    uint    public price1CumulativeLast;\n    uint32  public blockTimestampLast;\n    FixedPoint.uq112x112 public price0Average;\n    FixedPoint.uq112x112 public price1Average;\n\n    constructor(address factory, address tokenA, address tokenB) public {\n        IAstraPair _pair = IAstraPair(AstraLibrary.pairFor(factory, tokenA, tokenB));\n        pair = _pair;\n        token0 = _pair.token0();\n        token1 = _pair.token1();\n        price0CumulativeLast = _pair.price0CumulativeLast(); // fetch the current accumulated price value (1 / 0)\n        price1CumulativeLast = _pair.price1CumulativeLast(); // fetch the current accumulated price value (0 / 1)\n        uint112 reserve0;\n        uint112 reserve1;\n        (reserve0, reserve1, blockTimestampLast) = _pair.getReserves();\n        require(reserve0 != 0 && reserve1 != 0, 'ExampleOracleSimple: NO_RESERVES'); // ensure that there's liquidity in the pair\n    }\n\n    function update() external {\n        (uint price0Cumulative, uint price1Cumulative, uint32 blockTimestamp) =\n            AstraOracleLibrary.currentCumulativePrices(address(pair));\n        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired\n\n        // ensure that at least one full period has passed since the last update\n        require(timeElapsed >= PERIOD, 'ExampleOracleSimple: PERIOD_NOT_ELAPSED');\n\n        // overflow is desired, casting never truncates\n        // cumulative price is in (uq112x112 price * seconds) units so we simply wrap it after division by time elapsed\n        price0Average = FixedPoint.uq112x112(uint224((price0Cumulative - price0CumulativeLast) / timeElapsed));\n        price1Average = FixedPoint.uq112x112(uint224((price1Cumulative - price1CumulativeLast) / timeElapsed));\n\n        price0CumulativeLast = price0Cumulative;\n        price1CumulativeLast = price1Cumulative;\n        blockTimestampLast = blockTimestamp;\n    }\n\n    // note this will always return 0 before update has been called successfully for the first time.\n    function consult(address token, uint amountIn) external view returns (uint amountOut) {\n        if (token == token0) {\n            amountOut = price0Average.mul(amountIn).decode144();\n        } else {\n            require(token == token1, 'ExampleOracleSimple: INVALID_TOKEN');\n            amountOut = price1Average.mul(amountIn).decode144();\n        }\n    }\n}\n"},"contracts/periphery/examples/ExampleSlidingWindowOracle.sol":{"content":"pragma solidity =0.6.6;\n\nimport '../../core/interfaces/IAstraFactory.sol';\nimport '../../core/interfaces/IAstraPair.sol';\n\nimport '../libraries/FixedPoint.sol';\nimport '../libraries/SafeMath.sol';\nimport '../libraries/AstraLibrary.sol';\nimport '../libraries/AstraOracleLibrary.sol';\n\n// sliding window oracle that uses observations collected over a window to provide moving price averages in the past\n// `windowSize` with a precision of `windowSize / granularity`\n// note this is a singleton oracle and only needs to be deployed once per desired parameters, which\n// differs from the simple oracle which must be deployed once per pair.\ncontract ExampleSlidingWindowOracle {\n    using FixedPoint for *;\n    using SafeMath for uint;\n\n    struct Observation {\n        uint timestamp;\n        uint price0Cumulative;\n        uint price1Cumulative;\n    }\n\n    address public immutable factory;\n    // the desired amount of time over which the moving average should be computed, e.g. 24 hours\n    uint public immutable windowSize;\n    // the number of observations stored for each pair, i.e. how many price observations are stored for the window.\n    // as granularity increases from 1, more frequent updates are needed, but moving averages become more precise.\n    // averages are computed over intervals with sizes in the range:\n    //   [windowSize - (windowSize / granularity) * 2, windowSize]\n    // e.g. if the window size is 24 hours, and the granularity is 24, the oracle will return the average price for\n    //   the period:\n    //   [now - [22 hours, 24 hours], now]\n    uint8 public immutable granularity;\n    // this is redundant with granularity and windowSize, but stored for gas savings & informational purposes.\n    uint public immutable periodSize;\n\n    // mapping from pair address to a list of price observations of that pair\n    mapping(address => Observation[]) public pairObservations;\n\n    constructor(address factory_, uint windowSize_, uint8 granularity_) public {\n        require(granularity_ > 1, 'SlidingWindowOracle: GRANULARITY');\n        require(\n            (periodSize = windowSize_ / granularity_) * granularity_ == windowSize_,\n            'SlidingWindowOracle: WINDOW_NOT_EVENLY_DIVISIBLE'\n        );\n        factory = factory_;\n        windowSize = windowSize_;\n        granularity = granularity_;\n    }\n\n    // returns the index of the observation corresponding to the given timestamp\n    function observationIndexOf(uint timestamp) public view returns (uint8 index) {\n        uint epochPeriod = timestamp / periodSize;\n        return uint8(epochPeriod % granularity);\n    }\n\n    // returns the observation from the oldest epoch (at the beginning of the window) relative to the current time\n    function getFirstObservationInWindow(address pair) private view returns (Observation storage firstObservation) {\n        uint8 observationIndex = observationIndexOf(block.timestamp);\n        // no overflow issue. if observationIndex + 1 overflows, result is still zero.\n        uint8 firstObservationIndex = (observationIndex + 1) % granularity;\n        firstObservation = pairObservations[pair][firstObservationIndex];\n    }\n\n    // update the cumulative price for the observation at the current timestamp. each observation is updated at most\n    // once per epoch period.\n    function update(address tokenA, address tokenB) external {\n        address pair = AstraLibrary.pairFor(factory, tokenA, tokenB);\n\n        // populate the array with empty observations (first call only)\n        for (uint i = pairObservations[pair].length; i < granularity; i++) {\n            pairObservations[pair].push();\n        }\n\n        // get the observation for the current period\n        uint8 observationIndex = observationIndexOf(block.timestamp);\n        Observation storage observation = pairObservations[pair][observationIndex];\n\n        // we only want to commit updates once per period (i.e. windowSize / granularity)\n        uint timeElapsed = block.timestamp - observation.timestamp;\n        if (timeElapsed > periodSize) {\n            (uint price0Cumulative, uint price1Cumulative,) = AstraOracleLibrary.currentCumulativePrices(pair);\n            observation.timestamp = block.timestamp;\n            observation.price0Cumulative = price0Cumulative;\n            observation.price1Cumulative = price1Cumulative;\n        }\n    }\n\n    // given the cumulative prices of the start and end of a period, and the length of the period, compute the average\n    // price in terms of how much amount out is received for the amount in\n    function computeAmountOut(\n        uint priceCumulativeStart, uint priceCumulativeEnd,\n        uint timeElapsed, uint amountIn\n    ) private pure returns (uint amountOut) {\n        // overflow is desired.\n        FixedPoint.uq112x112 memory priceAverage = FixedPoint.uq112x112(\n            uint224((priceCumulativeEnd - priceCumulativeStart) / timeElapsed)\n        );\n        amountOut = priceAverage.mul(amountIn).decode144();\n    }\n\n    // returns the amount out corresponding to the amount in for a given token using the moving average over the time\n    // range [now - [windowSize, windowSize - periodSize * 2], now]\n    // update must have been called for the bucket corresponding to timestamp `now - windowSize`\n    function consult(address tokenIn, uint amountIn, address tokenOut) external view returns (uint amountOut) {\n        address pair = AstraLibrary.pairFor(factory, tokenIn, tokenOut);\n        Observation storage firstObservation = getFirstObservationInWindow(pair);\n\n        uint timeElapsed = block.timestamp - firstObservation.timestamp;\n        require(timeElapsed <= windowSize, 'SlidingWindowOracle: MISSING_HISTORICAL_OBSERVATION');\n        // should never happen.\n        require(timeElapsed >= windowSize - periodSize * 2, 'SlidingWindowOracle: UNEXPECTED_TIME_ELAPSED');\n\n        (uint price0Cumulative, uint price1Cumulative,) = AstraOracleLibrary.currentCumulativePrices(pair);\n        (address token0,) = AstraLibrary.sortTokens(tokenIn, tokenOut);\n\n        if (token0 == tokenIn) {\n            return computeAmountOut(firstObservation.price0Cumulative, price0Cumulative, timeElapsed, amountIn);\n        } else {\n            return computeAmountOut(firstObservation.price1Cumulative, price1Cumulative, timeElapsed, amountIn);\n        }\n    }\n}\n"},"contracts/periphery/examples/ExampleSwapToPrice.sol":{"content":"pragma solidity =0.6.6;\n\nimport '../../core/interfaces/IAstraPair.sol';\nimport '../libraries/Babylonian.sol';\nimport '../libraries/TransferHelper.sol';\n\nimport '../libraries/AstraLiquidityMathLibrary.sol';\nimport '../interfaces/IERC20.sol';\nimport '../interfaces/IAstraRouter01.sol';\nimport '../libraries/SafeMath.sol';\nimport '../libraries/AstraLibrary.sol';\n\ncontract ExampleSwapToPrice {\n    using SafeMath for uint256;\n\n    IAstraRouter01 public immutable router;\n    address public immutable factory;\n\n    constructor(address factory_, IAstraRouter01 router_) public {\n        factory = factory_;\n        router = router_;\n    }\n\n    // swaps an amount of either token such that the trade is profit-maximizing, given an external true price\n    // true price is expressed in the ratio of token A to token B\n    // caller must approve this contract to spend whichever token is intended to be swapped\n    function swapToPrice(\n        address tokenA,\n        address tokenB,\n        uint256 truePriceTokenA,\n        uint256 truePriceTokenB,\n        uint256 maxSpendTokenA,\n        uint256 maxSpendTokenB,\n        address to,\n        uint256 deadline\n    ) public {\n        // true price is expressed as a ratio, so both values must be non-zero\n        require(truePriceTokenA != 0 && truePriceTokenB != 0, \"ExampleSwapToPrice: ZERO_PRICE\");\n        // caller can specify 0 for either if they wish to swap in only one direction, but not both\n        require(maxSpendTokenA != 0 || maxSpendTokenB != 0, \"ExampleSwapToPrice: ZERO_SPEND\");\n\n        bool aToB;\n        uint256 amountIn;\n        {\n            (uint256 reserveA, uint256 reserveB) = AstraLibrary.getReserves(factory, tokenA, tokenB);\n            (aToB, amountIn) = AstraLiquidityMathLibrary.computeProfitMaximizingTrade(\n                truePriceTokenA, truePriceTokenB,\n                reserveA, reserveB\n            );\n        }\n\n        require(amountIn > 0, 'ExampleSwapToPrice: ZERO_AMOUNT_IN');\n\n        // spend up to the allowance of the token in\n        uint256 maxSpend = aToB ? maxSpendTokenA : maxSpendTokenB;\n        if (amountIn > maxSpend) {\n            amountIn = maxSpend;\n        }\n\n        address tokenIn = aToB ? tokenA : tokenB;\n        address tokenOut = aToB ? tokenB : tokenA;\n        TransferHelper.safeTransferFrom(tokenIn, msg.sender, address(this), amountIn);\n        TransferHelper.safeApprove(tokenIn, address(router), amountIn);\n\n        address[] memory path = new address[](2);\n        path[0] = tokenIn;\n        path[1] = tokenOut;\n\n        router.swapExactTokensForTokens(\n            amountIn,\n            0, // amountOutMin: we can skip computing this number because the math is tested\n            path,\n            to,\n            deadline\n        );\n    }\n}\n"},"contracts/periphery/interfaces/IAstraMigrator.sol":{"content":"pragma solidity >=0.5.0;\n\ninterface IAstraMigrator {\n    function migrate(address token, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external;\n}\n"},"contracts/periphery/interfaces/IAstraRouter01.sol":{"content":"pragma solidity >=0.6.2;\n\ninterface IAstraRouter01 {\n    function factory() external pure returns (address);\n\n    function SAMB() external pure returns (address);\n\n    function addLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 amountADesired,\n        uint256 amountBDesired,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline\n    )\n        external\n        returns (\n            uint256 amountA,\n            uint256 amountB,\n            uint256 liquidity\n        );\n\n    function addLiquidityAMB(\n        address token,\n        uint256 amountTokenDesired,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline\n    )\n        external\n        payable\n        returns (\n            uint256 amountToken,\n            uint256 amountAMB,\n            uint256 liquidity\n        );\n\n    function removeLiquidity(\n        address tokenA,\n        address tokenB,\n        uint256 liquidity,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline\n    ) external returns (uint256 amountA, uint256 amountB);\n\n    function removeLiquidityAMB(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline\n    ) external returns (uint256 amountToken, uint256 amountAMB);\n\n    function removeLiquidityWithPermit(\n        address tokenA,\n        address tokenB,\n        uint256 liquidity,\n        uint256 amountAMin,\n        uint256 amountBMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external returns (uint256 amountA, uint256 amountB);\n\n    function removeLiquidityAMBWithPermit(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external returns (uint256 amountToken, uint256 amountAMB);\n\n    function swapExactTokensForTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external returns (uint256[] memory amounts);\n\n    function swapTokensForExactTokens(\n        uint256 amountOut,\n        uint256 amountInMax,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external returns (uint256[] memory amounts);\n\n    function swapExactAMBForTokens(\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external payable returns (uint256[] memory amounts);\n\n    function swapTokensForExactAMB(\n        uint256 amountOut,\n        uint256 amountInMax,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external returns (uint256[] memory amounts);\n\n    function swapExactTokensForAMB(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external returns (uint256[] memory amounts);\n\n    function swapAMBForExactTokens(\n        uint256 amountOut,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external payable returns (uint256[] memory amounts);\n\n    function quote(\n        uint256 amountA,\n        uint256 reserveA,\n        uint256 reserveB\n    ) external pure returns (uint256 amountB);\n\n    function getAmountOut(\n        uint256 amountIn,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) external pure returns (uint256 amountOut);\n\n    function getAmountIn(\n        uint256 amountOut,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) external pure returns (uint256 amountIn);\n\n    function getAmountsOut(uint256 amountIn, address[] calldata path)\n        external\n        view\n        returns (uint256[] memory amounts);\n\n    function getAmountsIn(uint256 amountOut, address[] calldata path)\n        external\n        view\n        returns (uint256[] memory amounts);\n}\n"},"contracts/periphery/interfaces/IAstraRouter02.sol":{"content":"pragma solidity >=0.6.2;\n\nimport \"./IAstraRouter01.sol\";\n\ninterface IAstraRouter02 is IAstraRouter01 {\n    function removeLiquidityAMBSupportingFeeOnTransferTokens(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline\n    ) external returns (uint256 amountAMB);\n\n    function removeLiquidityAMBWithPermitSupportingFeeOnTransferTokens(\n        address token,\n        uint256 liquidity,\n        uint256 amountTokenMin,\n        uint256 amountAMBMin,\n        address to,\n        uint256 deadline,\n        bool approveMax,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external returns (uint256 amountAMB);\n\n    function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external;\n\n    function swapExactAMBForTokensSupportingFeeOnTransferTokens(\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external payable;\n\n    function swapExactTokensForAMBSupportingFeeOnTransferTokens(\n        uint256 amountIn,\n        uint256 amountOutMin,\n        address[] calldata path,\n        address to,\n        uint256 deadline\n    ) external;\n}\n"},"contracts/periphery/interfaces/IERC20.sol":{"content":"pragma solidity >=0.5.0;\n\ninterface IERC20 {\n    event Approval(address indexed owner, address indexed spender, uint value);\n    event Transfer(address indexed from, address indexed to, uint value);\n\n    function name() external view returns (string memory);\n    function symbol() external view returns (string memory);\n    function decimals() external view returns (uint8);\n    function totalSupply() external view returns (uint);\n    function balanceOf(address owner) external view returns (uint);\n    function allowance(address owner, address spender) external view returns (uint);\n\n    function approve(address spender, uint value) external returns (bool);\n    function transfer(address to, uint value) external returns (bool);\n    function transferFrom(address from, address to, uint value) external returns (bool);\n}\n"},"contracts/periphery/interfaces/ISAMB.sol":{"content":"pragma solidity >=0.5.0;\n\ninterface ISAMB {\n    function deposit() external payable;\n    function transfer(address to, uint value) external returns (bool);\n    function withdraw(uint) external;\n}\n"},"contracts/periphery/interfaces/V1/IAstraV1Exchange.sol":{"content":"pragma solidity >=0.5.0;\n\ninterface IAstraV1Exchange {\n    function balanceOf(address owner) external view returns (uint);\n    function transferFrom(address from, address to, uint value) external returns (bool);\n    function removeLiquidity(uint, uint, uint, uint) external returns (uint, uint);\n    function tokenToAMBSwapInput(uint, uint, uint) external returns (uint);\n    function AMBToTokenSwapInput(uint, uint) external payable returns (uint);\n}\n"},"contracts/periphery/interfaces/V1/IAstraV1Factory.sol":{"content":"pragma solidity >=0.5.0;\n\ninterface IAstraV1Factory {\n    function getExchange(address) external view returns (address);\n}\n"},"contracts/periphery/libraries/AstraLibrary.sol":{"content":"pragma solidity >=0.5.0;\n\nimport \"../../core/interfaces/IAstraPair.sol\";\n\nimport \"./SafeMath.sol\";\n\nlibrary AstraLibrary {\n    using SafeMath for uint256;\n\n    // returns sorted token addresses, used to handle return values from pairs sorted in this order\n    function sortTokens(address tokenA, address tokenB)\n        internal\n        pure\n        returns (address token0, address token1)\n    {\n        require(tokenA != tokenB, \"AstraLibrary: IDENTICAL_ADDRESSES\");\n        (token0, token1) = tokenA < tokenB\n            ? (tokenA, tokenB)\n            : (tokenB, tokenA);\n        require(token0 != address(0), \"AstraLibrary: ZERO_ADDRESS\");\n    }\n\n    // calculates the CREATE2 address for a pair without making any external calls\n    function pairFor(\n        address factory,\n        address tokenA,\n        address tokenB\n    ) internal pure returns (address pair) {\n        (address token0, address token1) = sortTokens(tokenA, tokenB);\n        pair = address(\n            uint256(\n                keccak256(\n                    abi.encodePacked(\n                        hex\"ff\",\n                        factory,\n                        keccak256(abi.encodePacked(token0, token1)),\n                        hex\"400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f\" // init code hash\n                    )\n                )\n            )\n        );\n    }\n\n    // fetches and sorts the reserves for a pair\n    function getReserves(\n        address factory,\n        address tokenA,\n        address tokenB\n    ) internal view returns (uint256 reserveA, uint256 reserveB) {\n        (address token0, ) = sortTokens(tokenA, tokenB);\n        (uint256 reserve0, uint256 reserve1, ) = IAstraPair(\n            pairFor(factory, tokenA, tokenB)\n        ).getReserves();\n        (reserveA, reserveB) = tokenA == token0\n            ? (reserve0, reserve1)\n            : (reserve1, reserve0);\n    }\n\n    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\n    function quote(\n        uint256 amountA,\n        uint256 reserveA,\n        uint256 reserveB\n    ) internal pure returns (uint256 amountB) {\n        require(amountA > 0, \"AstraLibrary: INSUFFICIENT_AMOUNT\");\n        require(\n            reserveA > 0 && reserveB > 0,\n            \"AstraLibrary: INSUFFICIENT_LIQUIDITY\"\n        );\n        amountB = amountA.mul(reserveB) / reserveA;\n    }\n\n    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\n    function getAmountOut(\n        uint256 amountIn,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) internal pure returns (uint256 amountOut) {\n        require(amountIn > 0, \"AstraLibrary: INSUFFICIENT_INPUT_AMOUNT\");\n        require(\n            reserveIn > 0 && reserveOut > 0,\n            \"AstraLibrary: INSUFFICIENT_LIQUIDITY\"\n        );\n        uint256 amountInWithFee = amountIn.mul(997);\n        uint256 numerator = amountInWithFee.mul(reserveOut);\n        uint256 denominator = reserveIn.mul(1000).add(amountInWithFee);\n        amountOut = numerator / denominator;\n    }\n\n    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\n    function getAmountIn(\n        uint256 amountOut,\n        uint256 reserveIn,\n        uint256 reserveOut\n    ) internal pure returns (uint256 amountIn) {\n        require(amountOut > 0, \"AstraLibrary: INSUFFICIENT_OUTPUT_AMOUNT\");\n        require(\n            reserveIn > 0 && reserveOut > 0,\n            \"AstraLibrary: INSUFFICIENT_LIQUIDITY\"\n        );\n        uint256 numerator = reserveIn.mul(amountOut).mul(1000);\n        uint256 denominator = reserveOut.sub(amountOut).mul(997);\n        amountIn = (numerator / denominator).add(1);\n    }\n\n    // performs chained getAmountOut calculations on any number of pairs\n    function getAmountsOut(\n        address factory,\n        uint256 amountIn,\n        address[] memory path\n    ) internal view returns (uint256[] memory amounts) {\n        require(path.length >= 2, \"AstraLibrary: INVALID_PATH\");\n        amounts = new uint256[](path.length);\n        amounts[0] = amountIn;\n        for (uint256 i; i < path.length - 1; i++) {\n            (uint256 reserveIn, uint256 reserveOut) = getReserves(\n                factory,\n                path[i],\n                path[i + 1]\n            );\n            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\n        }\n    }\n\n    // performs chained getAmountIn calculations on any number of pairs\n    function getAmountsIn(\n        address factory,\n        uint256 amountOut,\n        address[] memory path\n    ) internal view returns (uint256[] memory amounts) {\n        require(path.length >= 2, \"AstraLibrary: INVALID_PATH\");\n        amounts = new uint256[](path.length);\n        amounts[amounts.length - 1] = amountOut;\n        for (uint256 i = path.length - 1; i > 0; i--) {\n            (uint256 reserveIn, uint256 reserveOut) = getReserves(\n                factory,\n                path[i - 1],\n                path[i]\n            );\n            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\n        }\n    }\n}\n"},"contracts/periphery/libraries/AstraLiquidityMathLibrary.sol":{"content":"pragma solidity >=0.5.0;\n\nimport '../../core/interfaces/IAstraPair.sol';\nimport '../../core/interfaces/IAstraFactory.sol';\n\nimport './Babylonian.sol';\nimport './FullMath.sol';\nimport './SafeMath.sol';\nimport './AstraLibrary.sol';\n\n// library containing some math for dealing with the liquidity shares of a pair, e.g. computing their exact value\n// in terms of the underlying tokens\nlibrary AstraLiquidityMathLibrary {\n    using SafeMath for uint256;\n\n    // computes the direction and magnitude of the profit-maximizing trade\n    function computeProfitMaximizingTrade(\n        uint256 truePriceTokenA,\n        uint256 truePriceTokenB,\n        uint256 reserveA,\n        uint256 reserveB\n    ) pure internal returns (bool aToB, uint256 amountIn) {\n        aToB = FullMath.mulDiv(reserveA, truePriceTokenB, reserveB) < truePriceTokenA;\n\n        uint256 invariant = reserveA.mul(reserveB);\n\n        uint256 leftSide = Babylonian.sqrt(\n            FullMath.mulDiv(\n                invariant.mul(1000),\n                aToB ? truePriceTokenA : truePriceTokenB,\n                (aToB ? truePriceTokenB : truePriceTokenA).mul(997)\n            )\n        );\n        uint256 rightSide = (aToB ? reserveA.mul(1000) : reserveB.mul(1000)) / 997;\n\n        if (leftSide < rightSide) return (false, 0);\n\n        // compute the amount that must be sent to move the price to the profit-maximizing price\n        amountIn = leftSide.sub(rightSide);\n    }\n\n    // gets the reserves after an arbitrage moves the price to the profit-maximizing ratio given an externally observed true price\n    function getReservesAfterArbitrage(\n        address factory,\n        address tokenA,\n        address tokenB,\n        uint256 truePriceTokenA,\n        uint256 truePriceTokenB\n    ) view internal returns (uint256 reserveA, uint256 reserveB) {\n        // first get reserves before the swap\n        (reserveA, reserveB) = AstraLibrary.getReserves(factory, tokenA, tokenB);\n\n        require(reserveA > 0 && reserveB > 0, 'AstraArbitrageLibrary: ZERO_PAIR_RESERVES');\n\n        // then compute how much to swap to arb to the true price\n        (bool aToB, uint256 amountIn) = computeProfitMaximizingTrade(truePriceTokenA, truePriceTokenB, reserveA, reserveB);\n\n        if (amountIn == 0) {\n            return (reserveA, reserveB);\n        }\n\n        // now affect the trade to the reserves\n        if (aToB) {\n            uint amountOut = AstraLibrary.getAmountOut(amountIn, reserveA, reserveB);\n            reserveA += amountIn;\n            reserveB -= amountOut;\n        } else {\n            uint amountOut = AstraLibrary.getAmountOut(amountIn, reserveB, reserveA);\n            reserveB += amountIn;\n            reserveA -= amountOut;\n        }\n    }\n\n    // computes liquidity value given all the parameters of the pair\n    function computeLiquidityValue(\n        uint256 reservesA,\n        uint256 reservesB,\n        uint256 totalSupply,\n        uint256 liquidityAmount,\n        bool feeOn,\n        uint kLast\n    ) internal pure returns (uint256 tokenAAmount, uint256 tokenBAmount) {\n        if (feeOn && kLast > 0) {\n            uint rootK = Babylonian.sqrt(reservesA.mul(reservesB));\n            uint rootKLast = Babylonian.sqrt(kLast);\n            if (rootK > rootKLast) {\n                uint numerator1 = totalSupply;\n                uint numerator2 = rootK.sub(rootKLast);\n                uint denominator = rootK.mul(5).add(rootKLast);\n                uint feeLiquidity = FullMath.mulDiv(numerator1, numerator2, denominator);\n                totalSupply = totalSupply.add(feeLiquidity);\n            }\n        }\n        return (reservesA.mul(liquidityAmount) / totalSupply, reservesB.mul(liquidityAmount) / totalSupply);\n    }\n\n    // get all current parameters from the pair and compute value of a liquidity amount\n    // **note this is subject to manipulation, e.g. sandwich attacks**. prefer passing a manipulation resistant price to\n    // #getLiquidityValueAfterArbitrageToPrice\n    function getLiquidityValue(\n        address factory,\n        address tokenA,\n        address tokenB,\n        uint256 liquidityAmount\n    ) internal view returns (uint256 tokenAAmount, uint256 tokenBAmount) {\n        (uint256 reservesA, uint256 reservesB) = AstraLibrary.getReserves(factory, tokenA, tokenB);\n        IAstraPair pair = IAstraPair(AstraLibrary.pairFor(factory, tokenA, tokenB));\n        bool feeOn = IAstraFactory(factory).feeTo() != address(0);\n        uint kLast = feeOn ? pair.kLast() : 0;\n        uint totalSupply = pair.totalSupply();\n        return computeLiquidityValue(reservesA, reservesB, totalSupply, liquidityAmount, feeOn, kLast);\n    }\n\n    // given two tokens, tokenA and tokenB, and their \"true price\", i.e. the observed ratio of value of token A to token B,\n    // and a liquidity amount, returns the value of the liquidity in terms of tokenA and tokenB\n    function getLiquidityValueAfterArbitrageToPrice(\n        address factory,\n        address tokenA,\n        address tokenB,\n        uint256 truePriceTokenA,\n        uint256 truePriceTokenB,\n        uint256 liquidityAmount\n    ) internal view returns (\n        uint256 tokenAAmount,\n        uint256 tokenBAmount\n    ) {\n        bool feeOn = IAstraFactory(factory).feeTo() != address(0);\n        IAstraPair pair = IAstraPair(AstraLibrary.pairFor(factory, tokenA, tokenB));\n        uint kLast = feeOn ? pair.kLast() : 0;\n        uint totalSupply = pair.totalSupply();\n\n        // this also checks that totalSupply > 0\n        require(totalSupply >= liquidityAmount && liquidityAmount > 0, 'ComputeLiquidityValue: LIQUIDITY_AMOUNT');\n\n        (uint reservesA, uint reservesB) = getReservesAfterArbitrage(factory, tokenA, tokenB, truePriceTokenA, truePriceTokenB);\n\n        return computeLiquidityValue(reservesA, reservesB, totalSupply, liquidityAmount, feeOn, kLast);\n    }\n}\n"},"contracts/periphery/libraries/AstraOracleLibrary.sol":{"content":"pragma solidity >=0.5.0;\n\nimport '../../core/interfaces/IAstraPair.sol';\nimport './FixedPoint.sol';\n\n// library with helper methods for oracles that are concerned with computing average prices\nlibrary AstraOracleLibrary {\n    using FixedPoint for *;\n\n    // helper function that returns the current block timestamp within the range of uint32, i.e. [0, 2**32 - 1]\n    function currentBlockTimestamp() internal view returns (uint32) {\n        return uint32(block.timestamp % 2 ** 32);\n    }\n\n    // produces the cumulative price using counterfactuals to save gas and avoid a call to sync.\n    function currentCumulativePrices(\n        address pair\n    ) internal view returns (uint price0Cumulative, uint price1Cumulative, uint32 blockTimestamp) {\n        blockTimestamp = currentBlockTimestamp();\n        price0Cumulative = IAstraPair(pair).price0CumulativeLast();\n        price1Cumulative = IAstraPair(pair).price1CumulativeLast();\n\n        // if time has elapsed since the last update on the pair, mock the accumulated price values\n        (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast) = IAstraPair(pair).getReserves();\n        if (blockTimestampLast != blockTimestamp) {\n            // subtraction overflow is desired\n            uint32 timeElapsed = blockTimestamp - blockTimestampLast;\n            // addition overflow is desired\n            // counterfactual\n            price0Cumulative += uint(FixedPoint.fraction(reserve1, reserve0)._x) * timeElapsed;\n            // counterfactual\n            price1Cumulative += uint(FixedPoint.fraction(reserve0, reserve1)._x) * timeElapsed;\n        }\n    }\n}\n"},"contracts/periphery/libraries/Babylonian.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.4.0;\n\n// computes square roots using the babylonian method\n// https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method\nlibrary Babylonian {\n    // credit for this implementation goes to\n    // https://github.com/abdk-consulting/abdk-libraries-solidity/blob/master/ABDKMath64x64.sol#L687\n    function sqrt(uint256 x) internal pure returns (uint256) {\n        if (x == 0) return 0;\n        // this block is equivalent to r = uint256(1) << (BitMath.mostSignificantBit(x) / 2);\n        // however that code costs significantly more gas\n        uint256 xx = x;\n        uint256 r = 1;\n        if (xx >= 0x100000000000000000000000000000000) {\n            xx >>= 128;\n            r <<= 64;\n        }\n        if (xx >= 0x10000000000000000) {\n            xx >>= 64;\n            r <<= 32;\n        }\n        if (xx >= 0x100000000) {\n            xx >>= 32;\n            r <<= 16;\n        }\n        if (xx >= 0x10000) {\n            xx >>= 16;\n            r <<= 8;\n        }\n        if (xx >= 0x100) {\n            xx >>= 8;\n            r <<= 4;\n        }\n        if (xx >= 0x10) {\n            xx >>= 4;\n            r <<= 2;\n        }\n        if (xx >= 0x8) {\n            r <<= 1;\n        }\n        r = (r + x / r) >> 1;\n        r = (r + x / r) >> 1;\n        r = (r + x / r) >> 1;\n        r = (r + x / r) >> 1;\n        r = (r + x / r) >> 1;\n        r = (r + x / r) >> 1;\n        r = (r + x / r) >> 1; // Seven iterations should be enough\n        uint256 r1 = x / r;\n        return (r < r1 ? r : r1);\n    }\n}\n"},"contracts/periphery/libraries/BitMath.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity >=0.5.0;\n\nlibrary BitMath {\n    // returns the 0 indexed position of the most significant bit of the input x\n    // s.t. x >= 2**msb and x < 2**(msb+1)\n    function mostSignificantBit(uint256 x) internal pure returns (uint8 r) {\n        require(x > 0, 'BitMath::mostSignificantBit: zero');\n\n        if (x >= 0x100000000000000000000000000000000) {\n            x >>= 128;\n            r += 128;\n        }\n        if (x >= 0x10000000000000000) {\n            x >>= 64;\n            r += 64;\n        }\n        if (x >= 0x100000000) {\n            x >>= 32;\n            r += 32;\n        }\n        if (x >= 0x10000) {\n            x >>= 16;\n            r += 16;\n        }\n        if (x >= 0x100) {\n            x >>= 8;\n            r += 8;\n        }\n        if (x >= 0x10) {\n            x >>= 4;\n            r += 4;\n        }\n        if (x >= 0x4) {\n            x >>= 2;\n            r += 2;\n        }\n        if (x >= 0x2) r += 1;\n    }\n\n    // returns the 0 indexed position of the least significant bit of the input x\n    // s.t. (x & 2**lsb) != 0 and (x & (2**(lsb) - 1)) == 0)\n    // i.e. the bit at the index is set and the mask of all lower bits is 0\n    function leastSignificantBit(uint256 x) internal pure returns (uint8 r) {\n        require(x > 0, 'BitMath::leastSignificantBit: zero');\n\n        r = 255;\n        if (x & uint128(-1) > 0) {\n            r -= 128;\n        } else {\n            x >>= 128;\n        }\n        if (x & uint64(-1) > 0) {\n            r -= 64;\n        } else {\n            x >>= 64;\n        }\n        if (x & uint32(-1) > 0) {\n            r -= 32;\n        } else {\n            x >>= 32;\n        }\n        if (x & uint16(-1) > 0) {\n            r -= 16;\n        } else {\n            x >>= 16;\n        }\n        if (x & uint8(-1) > 0) {\n            r -= 8;\n        } else {\n            x >>= 8;\n        }\n        if (x & 0xf > 0) {\n            r -= 4;\n        } else {\n            x >>= 4;\n        }\n        if (x & 0x3 > 0) {\n            r -= 2;\n        } else {\n            x >>= 2;\n        }\n        if (x & 0x1 > 0) r -= 1;\n    }\n}\n"},"contracts/periphery/libraries/FixedPoint.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity >=0.4.0;\n\nimport './FullMath.sol';\nimport \"../../periphery/libraries/Babylonian.sol\";\nimport './BitMath.sol';\n\n// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))\nlibrary FixedPoint {\n    // range: [0, 2**112 - 1]\n    // resolution: 1 / 2**112\n    struct uq112x112 {\n        uint224 _x;\n    }\n\n    // range: [0, 2**144 - 1]\n    // resolution: 1 / 2**112\n    struct uq144x112 {\n        uint256 _x;\n    }\n\n    uint8 public constant RESOLUTION = 112;\n    uint256 public constant Q112 = 0x10000000000000000000000000000; // 2**112\n    uint256 private constant Q224 = 0x100000000000000000000000000000000000000000000000000000000; // 2**224\n    uint256 private constant LOWER_MASK = 0xffffffffffffffffffffffffffff; // decimal of UQ*x112 (lower 112 bits)\n\n    // encode a uint112 as a UQ112x112\n    function encode(uint112 x) internal pure returns (uq112x112 memory) {\n        return uq112x112(uint224(x) << RESOLUTION);\n    }\n\n    // encodes a uint144 as a UQ144x112\n    function encode144(uint144 x) internal pure returns (uq144x112 memory) {\n        return uq144x112(uint256(x) << RESOLUTION);\n    }\n\n    // decode a UQ112x112 into a uint112 by truncating after the radix point\n    function decode(uq112x112 memory self) internal pure returns (uint112) {\n        return uint112(self._x >> RESOLUTION);\n    }\n\n    // decode a UQ144x112 into a uint144 by truncating after the radix point\n    function decode144(uq144x112 memory self) internal pure returns (uint144) {\n        return uint144(self._x >> RESOLUTION);\n    }\n\n    // multiply a UQ112x112 by a uint, returning a UQ144x112\n    // reverts on overflow\n    function mul(uq112x112 memory self, uint256 y) internal pure returns (uq144x112 memory) {\n        uint256 z = 0;\n        require(y == 0 || (z = self._x * y) / y == self._x, 'FixedPoint::mul: overflow');\n        return uq144x112(z);\n    }\n\n    // multiply a UQ112x112 by an int and decode, returning an int\n    // reverts on overflow\n    function muli(uq112x112 memory self, int256 y) internal pure returns (int256) {\n        uint256 z = FullMath.mulDiv(self._x, uint256(y < 0 ? -y : y), Q112);\n        require(z < 2**255, 'FixedPoint::muli: overflow');\n        return y < 0 ? -int256(z) : int256(z);\n    }\n\n    // multiply a UQ112x112 by a UQ112x112, returning a UQ112x112\n    // lossy\n    function muluq(uq112x112 memory self, uq112x112 memory other) internal pure returns (uq112x112 memory) {\n        if (self._x == 0 || other._x == 0) {\n            return uq112x112(0);\n        }\n        uint112 upper_self = uint112(self._x >> RESOLUTION); // * 2^0\n        uint112 lower_self = uint112(self._x & LOWER_MASK); // * 2^-112\n        uint112 upper_other = uint112(other._x >> RESOLUTION); // * 2^0\n        uint112 lower_other = uint112(other._x & LOWER_MASK); // * 2^-112\n\n        // partial products\n        uint224 upper = uint224(upper_self) * upper_other; // * 2^0\n        uint224 lower = uint224(lower_self) * lower_other; // * 2^-224\n        uint224 uppers_lowero = uint224(upper_self) * lower_other; // * 2^-112\n        uint224 uppero_lowers = uint224(upper_other) * lower_self; // * 2^-112\n\n        // so the bit shift does not overflow\n        require(upper <= uint112(-1), 'FixedPoint::muluq: upper overflow');\n\n        // this cannot exceed 256 bits, all values are 224 bits\n        uint256 sum = uint256(upper << RESOLUTION) + uppers_lowero + uppero_lowers + (lower >> RESOLUTION);\n\n        // so the cast does not overflow\n        require(sum <= uint224(-1), 'FixedPoint::muluq: sum overflow');\n\n        return uq112x112(uint224(sum));\n    }\n\n    // divide a UQ112x112 by a UQ112x112, returning a UQ112x112\n    function divuq(uq112x112 memory self, uq112x112 memory other) internal pure returns (uq112x112 memory) {\n        require(other._x > 0, 'FixedPoint::divuq: division by zero');\n        if (self._x == other._x) {\n            return uq112x112(uint224(Q112));\n        }\n        if (self._x <= uint144(-1)) {\n            uint256 value = (uint256(self._x) << RESOLUTION) / other._x;\n            require(value <= uint224(-1), 'FixedPoint::divuq: overflow');\n            return uq112x112(uint224(value));\n        }\n\n        uint256 result = FullMath.mulDiv(Q112, self._x, other._x);\n        require(result <= uint224(-1), 'FixedPoint::divuq: overflow');\n        return uq112x112(uint224(result));\n    }\n\n    // returns a UQ112x112 which represents the ratio of the numerator to the denominator\n    // can be lossy\n    function fraction(uint256 numerator, uint256 denominator) internal pure returns (uq112x112 memory) {\n        require(denominator > 0, 'FixedPoint::fraction: division by zero');\n        if (numerator == 0) return FixedPoint.uq112x112(0);\n\n        if (numerator <= uint144(-1)) {\n            uint256 result = (numerator << RESOLUTION) / denominator;\n            require(result <= uint224(-1), 'FixedPoint::fraction: overflow');\n            return uq112x112(uint224(result));\n        } else {\n            uint256 result = FullMath.mulDiv(numerator, Q112, denominator);\n            require(result <= uint224(-1), 'FixedPoint::fraction: overflow');\n            return uq112x112(uint224(result));\n        }\n    }\n\n    // take the reciprocal of a UQ112x112\n    // reverts on overflow\n    // lossy\n    function reciprocal(uq112x112 memory self) internal pure returns (uq112x112 memory) {\n        require(self._x != 0, 'FixedPoint::reciprocal: reciprocal of zero');\n        require(self._x != 1, 'FixedPoint::reciprocal: overflow');\n        return uq112x112(uint224(Q224 / self._x));\n    }\n\n    // square root of a UQ112x112\n    // lossy between 0/1 and 40 bits\n    function sqrt(uq112x112 memory self) internal pure returns (uq112x112 memory) {\n        if (self._x <= uint144(-1)) {\n            return uq112x112(uint224(Babylonian.sqrt(uint256(self._x) << 112)));\n        }\n\n        uint8 safeShiftBits = 255 - BitMath.mostSignificantBit(self._x);\n        safeShiftBits -= safeShiftBits % 2;\n        return uq112x112(uint224(Babylonian.sqrt(uint256(self._x) << safeShiftBits) << ((112 - safeShiftBits) / 2)));\n    }\n}\n"},"contracts/periphery/libraries/FullMath.sol":{"content":"// SPDX-License-Identifier: CC-BY-4.0\npragma solidity >=0.4.0;\n\n// taken from https://medium.com/coinmonks/math-in-solidity-part-3-percents-and-proportions-4db014e080b1\n// license is CC-BY-4.0\nlibrary FullMath {\n    function fullMul(uint256 x, uint256 y) internal pure returns (uint256 l, uint256 h) {\n        uint256 mm = mulmod(x, y, uint256(-1));\n        l = x * y;\n        h = mm - l;\n        if (mm < l) h -= 1;\n    }\n\n    function fullDiv(\n        uint256 l,\n        uint256 h,\n        uint256 d\n    ) private pure returns (uint256) {\n        uint256 pow2 = d & -d;\n        d /= pow2;\n        l /= pow2;\n        l += h * ((-pow2) / pow2 + 1);\n        uint256 r = 1;\n        r *= 2 - d * r;\n        r *= 2 - d * r;\n        r *= 2 - d * r;\n        r *= 2 - d * r;\n        r *= 2 - d * r;\n        r *= 2 - d * r;\n        r *= 2 - d * r;\n        r *= 2 - d * r;\n        return l * r;\n    }\n\n    function mulDiv(\n        uint256 x,\n        uint256 y,\n        uint256 d\n    ) internal pure returns (uint256) {\n        (uint256 l, uint256 h) = fullMul(x, y);\n\n        uint256 mm = mulmod(x, y, d);\n        if (mm > l) h -= 1;\n        l -= mm;\n\n        if (h == 0) return l / d;\n\n        require(h < d, 'FullMath: FULLDIV_OVERFLOW');\n        return fullDiv(l, h, d);\n    }\n}\n"},"contracts/periphery/libraries/SafeMath.sol":{"content":"pragma solidity =0.6.6;\n\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\n\nlibrary SafeMath {\n    function add(uint x, uint y) internal pure returns (uint z) {\n        require((z = x + y) >= x, 'ds-math-add-overflow');\n    }\n\n    function sub(uint x, uint y) internal pure returns (uint z) {\n        require((z = x - y) <= x, 'ds-math-sub-underflow');\n    }\n\n    function mul(uint x, uint y) internal pure returns (uint z) {\n        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\n    }\n}\n"},"contracts/periphery/libraries/TransferHelper.sol":{"content":"// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity >=0.6.0;\n\n// helper methods for interacting with ERC20 tokens and sending AMB that do not consistently return true/false\nlibrary TransferHelper {\n    function safeApprove(\n        address token,\n        address to,\n        uint256 value\n    ) internal {\n        // bytes4(keccak256(bytes('approve(address,uint256)')));\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\n        require(\n            success && (data.length == 0 || abi.decode(data, (bool))),\n            'TransferHelper::safeApprove: approve failed'\n        );\n    }\n\n    function safeTransfer(\n        address token,\n        address to,\n        uint256 value\n    ) internal {\n        // bytes4(keccak256(bytes('transfer(address,uint256)')));\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\n        require(\n            success && (data.length == 0 || abi.decode(data, (bool))),\n            'TransferHelper::safeTransfer: transfer failed'\n        );\n    }\n\n    function safeTransferFrom(\n        address token,\n        address from,\n        address to,\n        uint256 value\n    ) internal {\n        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\n        require(\n            success && (data.length == 0 || abi.decode(data, (bool))),\n            'TransferHelper::transferFrom: transferFrom failed'\n        );\n    }\n\n    function safeTransferAMB(address to, uint256 value) internal {\n        (bool success, ) = to.call{value: value}(new bytes(0));\n        require(success, 'TransferHelper::safeTransferAMB: AMB transfer failed');\n    }\n}\n"},"contracts/periphery/test/DeflatingERC20.sol":{"content":"pragma solidity =0.6.6;\n\nimport \"../libraries/SafeMath.sol\";\n\ncontract DeflatingERC20 {\n    using SafeMath for uint256;\n\n    string public constant name = \"Deflating Test Token\";\n    string public constant symbol = \"DTT\";\n    uint8 public constant decimals = 18;\n    uint256 public totalSupply;\n    mapping(address => uint256) public balanceOf;\n    mapping(address => mapping(address => uint256)) public allowance;\n\n    bytes32 public DOMAIN_SEPARATOR;\n    // keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n    bytes32 public constant PERMIT_TYPEHASH =\n        0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n    mapping(address => uint256) public nonces;\n\n    event Approval(\n        address indexed owner,\n        address indexed spender,\n        uint256 value\n    );\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    constructor(uint256 _totalSupply) public {\n        uint256 chainId = 0x414e;\n        DOMAIN_SEPARATOR = keccak256(\n            abi.encode(\n                keccak256(\n                    \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n                ),\n                keccak256(bytes(name)),\n                keccak256(bytes(\"1\")),\n                chainId,\n                address(this)\n            )\n        );\n        _mint(msg.sender, _totalSupply);\n    }\n\n    function _mint(address to, uint256 value) internal {\n        totalSupply = totalSupply.add(value);\n        balanceOf[to] = balanceOf[to].add(value);\n        emit Transfer(address(0), to, value);\n    }\n\n    function _burn(address from, uint256 value) internal {\n        balanceOf[from] = balanceOf[from].sub(value);\n        totalSupply = totalSupply.sub(value);\n        emit Transfer(from, address(0), value);\n    }\n\n    function _approve(\n        address owner,\n        address spender,\n        uint256 value\n    ) private {\n        allowance[owner][spender] = value;\n        emit Approval(owner, spender, value);\n    }\n\n    function _transfer(\n        address from,\n        address to,\n        uint256 value\n    ) private {\n        uint256 burnAmount = value / 100;\n        _burn(from, burnAmount);\n        uint256 transferAmount = value.sub(burnAmount);\n        balanceOf[from] = balanceOf[from].sub(transferAmount);\n        balanceOf[to] = balanceOf[to].add(transferAmount);\n        emit Transfer(from, to, transferAmount);\n    }\n\n    function approve(address spender, uint256 value) external returns (bool) {\n        _approve(msg.sender, spender, value);\n        return true;\n    }\n\n    function transfer(address to, uint256 value) external returns (bool) {\n        _transfer(msg.sender, to, value);\n        return true;\n    }\n\n    function transferFrom(\n        address from,\n        address to,\n        uint256 value\n    ) external returns (bool) {\n        if (allowance[from][msg.sender] != uint256(-1)) {\n            allowance[from][msg.sender] = allowance[from][msg.sender].sub(\n                value\n            );\n        }\n        _transfer(from, to, value);\n        return true;\n    }\n\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external {\n        require(deadline >= block.timestamp, \"EXPIRED\");\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                \"\\x19\\x01\",\n                DOMAIN_SEPARATOR,\n                keccak256(\n                    abi.encode(\n                        PERMIT_TYPEHASH,\n                        owner,\n                        spender,\n                        value,\n                        nonces[owner]++,\n                        deadline\n                    )\n                )\n            )\n        );\n        address recoveredAddress = ecrecover(digest, v, r, s);\n        require(\n            recoveredAddress != address(0) && recoveredAddress == owner,\n            \"INVALID_SIGNATURE\"\n        );\n        _approve(owner, spender, value);\n    }\n}\n"},"contracts/periphery/test/ERC20.sol":{"content":"pragma solidity =0.6.6;\n\nimport \"../libraries/SafeMath.sol\";\n\ncontract ERC20 {\n    using SafeMath for uint256;\n\n    string public constant name = \"Test Token\";\n    string public constant symbol = \"TT\";\n    uint8 public constant decimals = 18;\n    uint256 public totalSupply;\n    mapping(address => uint256) public balanceOf;\n    mapping(address => mapping(address => uint256)) public allowance;\n\n    bytes32 public DOMAIN_SEPARATOR;\n    // keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n    bytes32 public constant PERMIT_TYPEHASH =\n        0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n    mapping(address => uint256) public nonces;\n\n    event Approval(\n        address indexed owner,\n        address indexed spender,\n        uint256 value\n    );\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    constructor(uint256 _totalSupply) public {\n        uint256 chainId = 0x414e;\n        DOMAIN_SEPARATOR = keccak256(\n            abi.encode(\n                keccak256(\n                    \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"\n                ),\n                keccak256(bytes(name)),\n                keccak256(bytes(\"1\")),\n                chainId,\n                address(this)\n            )\n        );\n        _mint(msg.sender, _totalSupply);\n    }\n\n    function _mint(address to, uint256 value) internal {\n        totalSupply = totalSupply.add(value);\n        balanceOf[to] = balanceOf[to].add(value);\n        emit Transfer(address(0), to, value);\n    }\n\n    function _burn(address from, uint256 value) internal {\n        balanceOf[from] = balanceOf[from].sub(value);\n        totalSupply = totalSupply.sub(value);\n        emit Transfer(from, address(0), value);\n    }\n\n    function _approve(\n        address owner,\n        address spender,\n        uint256 value\n    ) private {\n        allowance[owner][spender] = value;\n        emit Approval(owner, spender, value);\n    }\n\n    function _transfer(\n        address from,\n        address to,\n        uint256 value\n    ) private {\n        balanceOf[from] = balanceOf[from].sub(value);\n        balanceOf[to] = balanceOf[to].add(value);\n        emit Transfer(from, to, value);\n    }\n\n    function approve(address spender, uint256 value) external returns (bool) {\n        _approve(msg.sender, spender, value);\n        return true;\n    }\n\n    function transfer(address to, uint256 value) external returns (bool) {\n        _transfer(msg.sender, to, value);\n        return true;\n    }\n\n    function transferFrom(\n        address from,\n        address to,\n        uint256 value\n    ) external returns (bool) {\n        if (allowance[from][msg.sender] != uint256(-1)) {\n            allowance[from][msg.sender] = allowance[from][msg.sender].sub(\n                value\n            );\n        }\n        _transfer(from, to, value);\n        return true;\n    }\n\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external {\n        require(deadline >= block.timestamp, \"EXPIRED\");\n        bytes32 digest = keccak256(\n            abi.encodePacked(\n                \"\\x19\\x01\",\n                DOMAIN_SEPARATOR,\n                keccak256(\n                    abi.encode(\n                        PERMIT_TYPEHASH,\n                        owner,\n                        spender,\n                        value,\n                        nonces[owner]++,\n                        deadline\n                    )\n                )\n            )\n        );\n        address recoveredAddress = ecrecover(digest, v, r, s);\n        require(\n            recoveredAddress != address(0) && recoveredAddress == owner,\n            \"INVALID_SIGNATURE\"\n        );\n        _approve(owner, spender, value);\n    }\n}\n"},"contracts/periphery/test/RouterEventEmitter.sol":{"content":"pragma solidity =0.6.6;\n\nimport '../interfaces/IAstraRouter01.sol';\n\ncontract RouterEventEmitter {\n    event Amounts(uint[] amounts);\n\n    receive() external payable {}\n\n    function swapExactTokensForTokens(\n        address router,\n        uint amountIn,\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external {\n        (bool success, bytes memory returnData) = router.delegatecall(abi.encodeWithSelector(\n            IAstraRouter01(router).swapExactTokensForTokens.selector, amountIn, amountOutMin, path, to, deadline\n        ));\n        assert(success);\n        emit Amounts(abi.decode(returnData, (uint[])));\n    }\n\n    function swapTokensForExactTokens(\n        address router,\n        uint amountOut,\n        uint amountInMax,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external {\n        (bool success, bytes memory returnData) = router.delegatecall(abi.encodeWithSelector(\n            IAstraRouter01(router).swapTokensForExactTokens.selector, amountOut, amountInMax, path, to, deadline\n        ));\n        assert(success);\n        emit Amounts(abi.decode(returnData, (uint[])));\n    }\n\n    function swapExactAMBForTokens(\n        address router,\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external payable {\n        (bool success, bytes memory returnData) = router.delegatecall(abi.encodeWithSelector(\n            IAstraRouter01(router).swapExactAMBForTokens.selector, amountOutMin, path, to, deadline\n        ));\n        assert(success);\n        emit Amounts(abi.decode(returnData, (uint[])));\n    }\n\n    function swapTokensForExactAMB(\n        address router,\n        uint amountOut,\n        uint amountInMax,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external {\n        (bool success, bytes memory returnData) = router.delegatecall(abi.encodeWithSelector(\n            IAstraRouter01(router).swapTokensForExactAMB.selector, amountOut, amountInMax, path, to, deadline\n        ));\n        assert(success);\n        emit Amounts(abi.decode(returnData, (uint[])));\n    }\n\n    function swapExactTokensForAMB(\n        address router,\n        uint amountIn,\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external {\n        (bool success, bytes memory returnData) = router.delegatecall(abi.encodeWithSelector(\n            IAstraRouter01(router).swapExactTokensForAMB.selector, amountIn, amountOutMin, path, to, deadline\n        ));\n        assert(success);\n        emit Amounts(abi.decode(returnData, (uint[])));\n    }\n\n    function swapAMBForExactTokens(\n        address router,\n        uint amountOut,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external payable {\n        (bool success, bytes memory returnData) = router.delegatecall(abi.encodeWithSelector(\n            IAstraRouter01(router).swapAMBForExactTokens.selector, amountOut, path, to, deadline\n        ));\n        assert(success);\n        emit Amounts(abi.decode(returnData, (uint[])));\n    }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"evmVersion":"petersburg","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"contracts/core/interfaces/IAstraCallee.sol":{"ast":{"absolutePath":"contracts/core/interfaces/IAstraCallee.sol","exportedSymbols":{"IAstraCallee":[13]},"id":14,"nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":13,"linearizedBaseContracts":[13],"name":"IAstraCallee","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"functionSelector":"ee906f6b","id":12,"implemented":false,"kind":"function","modifiers":[],"name":"astraCall","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":10,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","overrides":null,"scope":12,"src":"74:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2,"name":"address","nodeType":"ElementaryTypeName","src":"74:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","overrides":null,"scope":12,"src":"90:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4,"name":"uint","nodeType":"ElementaryTypeName","src":"90:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":7,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","overrides":null,"scope":12,"src":"104:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6,"name":"uint","nodeType":"ElementaryTypeName","src":"104:4:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","overrides":null,"scope":12,"src":"118:19:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":8,"name":"bytes","nodeType":"ElementaryTypeName","src":"118:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"73:65:0"},"returnParameters":{"id":11,"nodeType":"ParameterList","parameters":[],"src":"147:0:0"},"scope":13,"src":"55:93:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":14,"src":"26:124:0"}],"src":"0:151:0"},"id":0},"contracts/core/interfaces/IAstraFactory.sol":{"ast":{"absolutePath":"contracts/core/interfaces/IAstraFactory.sol","exportedSymbols":{"IAstraFactory":[76]},"id":77,"nodeType":"SourceUnit","nodes":[{"id":15,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:1"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":76,"linearizedBaseContracts":[76],"name":"IAstraFactory","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":null,"id":25,"name":"PairCreated","nodeType":"EventDefinition","parameters":{"id":24,"nodeType":"ParameterList","parameters":[{"constant":false,"id":17,"indexed":true,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","overrides":null,"scope":25,"src":"74:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":16,"name":"address","nodeType":"ElementaryTypeName","src":"74:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":19,"indexed":true,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","overrides":null,"scope":25,"src":"98:22:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":18,"name":"address","nodeType":"ElementaryTypeName","src":"98:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":21,"indexed":false,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":25,"src":"122:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":20,"name":"address","nodeType":"ElementaryTypeName","src":"122:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":23,"indexed":false,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":25,"src":"136:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":22,"name":"uint","nodeType":"ElementaryTypeName","src":"136:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"73:68:1"},"src":"56:86:1"},{"body":null,"documentation":null,"functionSelector":"017e7e58","id":30,"implemented":false,"kind":"function","modifiers":[],"name":"feeTo","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":26,"nodeType":"ParameterList","parameters":[],"src":"162:2:1"},"returnParameters":{"id":29,"nodeType":"ParameterList","parameters":[{"constant":false,"id":28,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":30,"src":"188:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":27,"name":"address","nodeType":"ElementaryTypeName","src":"188:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"187:9:1"},"scope":76,"src":"148:49:1","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"094b7415","id":35,"implemented":false,"kind":"function","modifiers":[],"name":"feeToSetter","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":31,"nodeType":"ParameterList","parameters":[],"src":"222:2:1"},"returnParameters":{"id":34,"nodeType":"ParameterList","parameters":[{"constant":false,"id":33,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":35,"src":"248:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"248:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"247:9:1"},"scope":76,"src":"202:55:1","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"e6a43905","id":44,"implemented":false,"kind":"function","modifiers":[],"name":"getPair","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":40,"nodeType":"ParameterList","parameters":[{"constant":false,"id":37,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":44,"src":"280:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":36,"name":"address","nodeType":"ElementaryTypeName","src":"280:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":39,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":44,"src":"296:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38,"name":"address","nodeType":"ElementaryTypeName","src":"296:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"279:32:1"},"returnParameters":{"id":43,"nodeType":"ParameterList","parameters":[{"constant":false,"id":42,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":44,"src":"335:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":41,"name":"address","nodeType":"ElementaryTypeName","src":"335:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"334:14:1"},"scope":76,"src":"263:86:1","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"1e3dd18b","id":51,"implemented":false,"kind":"function","modifiers":[],"name":"allPairs","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":47,"nodeType":"ParameterList","parameters":[{"constant":false,"id":46,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":51,"src":"372:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":45,"name":"uint","nodeType":"ElementaryTypeName","src":"372:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"371:6:1"},"returnParameters":{"id":50,"nodeType":"ParameterList","parameters":[{"constant":false,"id":49,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":51,"src":"401:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"401:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"400:14:1"},"scope":76,"src":"354:61:1","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"574f2ba3","id":56,"implemented":false,"kind":"function","modifiers":[],"name":"allPairsLength","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":52,"nodeType":"ParameterList","parameters":[],"src":"443:2:1"},"returnParameters":{"id":55,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":56,"src":"469:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":53,"name":"uint","nodeType":"ElementaryTypeName","src":"469:4:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"468:6:1"},"scope":76,"src":"420:55:1","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"c9c65396","id":65,"implemented":false,"kind":"function","modifiers":[],"name":"createPair","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":61,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":65,"src":"501:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":57,"name":"address","nodeType":"ElementaryTypeName","src":"501:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":60,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":65,"src":"517:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59,"name":"address","nodeType":"ElementaryTypeName","src":"517:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"500:32:1"},"returnParameters":{"id":64,"nodeType":"ParameterList","parameters":[{"constant":false,"id":63,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":65,"src":"551:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62,"name":"address","nodeType":"ElementaryTypeName","src":"551:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"550:14:1"},"scope":76,"src":"481:84:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"f46901ed","id":70,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeTo","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":68,"nodeType":"ParameterList","parameters":[{"constant":false,"id":67,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":70,"src":"589:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":66,"name":"address","nodeType":"ElementaryTypeName","src":"589:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"588:9:1"},"returnParameters":{"id":69,"nodeType":"ParameterList","parameters":[],"src":"606:0:1"},"scope":76,"src":"571:36:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"a2e74af6","id":75,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeToSetter","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":73,"nodeType":"ParameterList","parameters":[{"constant":false,"id":72,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":75,"src":"636:7:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":71,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"635:9:1"},"returnParameters":{"id":74,"nodeType":"ParameterList","parameters":[],"src":"653:0:1"},"scope":76,"src":"612:42:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":77,"src":"26:630:1"}],"src":"0:657:1"},"id":1},"contracts/core/interfaces/IAstraPair.sol":{"ast":{"absolutePath":"contracts/core/interfaces/IAstraPair.sol","exportedSymbols":{"IAstraPair":[318]},"id":319,"nodeType":"SourceUnit","nodes":[{"id":78,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:2"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":318,"linearizedBaseContracts":[318],"name":"IAstraPair","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":null,"id":86,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":85,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":86,"src":"68:21:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79,"name":"address","nodeType":"ElementaryTypeName","src":"68:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":82,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":86,"src":"91:23:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":81,"name":"address","nodeType":"ElementaryTypeName","src":"91:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":84,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":86,"src":"116:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":83,"name":"uint","nodeType":"ElementaryTypeName","src":"116:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"67:60:2"},"src":"53:75:2"},{"anonymous":false,"documentation":null,"id":94,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":93,"nodeType":"ParameterList","parameters":[{"constant":false,"id":88,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":94,"src":"148:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":87,"name":"address","nodeType":"ElementaryTypeName","src":"148:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":90,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":94,"src":"170:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":89,"name":"address","nodeType":"ElementaryTypeName","src":"170:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":92,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":94,"src":"190:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":91,"name":"uint","nodeType":"ElementaryTypeName","src":"190:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"147:54:2"},"src":"133:69:2"},{"body":null,"documentation":null,"functionSelector":"06fdde03","id":99,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":95,"nodeType":"ParameterList","parameters":[],"src":"221:2:2"},"returnParameters":{"id":98,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":99,"src":"247:13:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":96,"name":"string","nodeType":"ElementaryTypeName","src":"247:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"246:15:2"},"scope":318,"src":"208:54:2","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"95d89b41","id":104,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":100,"nodeType":"ParameterList","parameters":[],"src":"282:2:2"},"returnParameters":{"id":103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":102,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":104,"src":"308:13:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":101,"name":"string","nodeType":"ElementaryTypeName","src":"308:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"307:15:2"},"scope":318,"src":"267:56:2","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"313ce567","id":109,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"345:2:2"},"returnParameters":{"id":108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":107,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":109,"src":"371:5:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":106,"name":"uint8","nodeType":"ElementaryTypeName","src":"371:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"src":"370:7:2"},"scope":318,"src":"328:50:2","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"18160ddd","id":114,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":110,"nodeType":"ParameterList","parameters":[],"src":"403:2:2"},"returnParameters":{"id":113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":112,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":114,"src":"429:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":111,"name":"uint","nodeType":"ElementaryTypeName","src":"429:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"428:6:2"},"scope":318,"src":"383:52:2","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"70a08231","id":121,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":117,"nodeType":"ParameterList","parameters":[{"constant":false,"id":116,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":121,"src":"459:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":115,"name":"address","nodeType":"ElementaryTypeName","src":"459:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"458:15:2"},"returnParameters":{"id":120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":119,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":121,"src":"497:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":118,"name":"uint","nodeType":"ElementaryTypeName","src":"497:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"496:6:2"},"scope":318,"src":"440:63:2","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"dd62ed3e","id":130,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":123,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":130,"src":"527:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":122,"name":"address","nodeType":"ElementaryTypeName","src":"527:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":125,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":130,"src":"542:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":124,"name":"address","nodeType":"ElementaryTypeName","src":"542:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"526:32:2"},"returnParameters":{"id":129,"nodeType":"ParameterList","parameters":[{"constant":false,"id":128,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":130,"src":"582:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":127,"name":"uint","nodeType":"ElementaryTypeName","src":"582:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"581:6:2"},"scope":318,"src":"508:80:2","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"095ea7b3","id":139,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":132,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":139,"src":"611:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":131,"name":"address","nodeType":"ElementaryTypeName","src":"611:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":134,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":139,"src":"628:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":133,"name":"uint","nodeType":"ElementaryTypeName","src":"628:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"610:29:2"},"returnParameters":{"id":138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":137,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":139,"src":"658:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":136,"name":"bool","nodeType":"ElementaryTypeName","src":"658:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"657:6:2"},"scope":318,"src":"594:70:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"a9059cbb","id":148,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":141,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":148,"src":"687:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"687:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":143,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":148,"src":"699:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":142,"name":"uint","nodeType":"ElementaryTypeName","src":"699:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"686:24:2"},"returnParameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":148,"src":"729:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":145,"name":"bool","nodeType":"ElementaryTypeName","src":"729:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"728:6:2"},"scope":318,"src":"669:66:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"23b872dd","id":159,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":150,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":159,"src":"762:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":149,"name":"address","nodeType":"ElementaryTypeName","src":"762:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":152,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":159,"src":"776:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":151,"name":"address","nodeType":"ElementaryTypeName","src":"776:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":154,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":159,"src":"788:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":153,"name":"uint","nodeType":"ElementaryTypeName","src":"788:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"761:38:2"},"returnParameters":{"id":158,"nodeType":"ParameterList","parameters":[{"constant":false,"id":157,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":159,"src":"818:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":156,"name":"bool","nodeType":"ElementaryTypeName","src":"818:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"817:6:2"},"scope":318,"src":"740:84:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"3644e515","id":164,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":160,"nodeType":"ParameterList","parameters":[],"src":"855:2:2"},"returnParameters":{"id":163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":162,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":164,"src":"881:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":161,"name":"bytes32","nodeType":"ElementaryTypeName","src":"881:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"880:9:2"},"scope":318,"src":"830:60:2","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"30adf81f","id":169,"implemented":false,"kind":"function","modifiers":[],"name":"PERMIT_TYPEHASH","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":165,"nodeType":"ParameterList","parameters":[],"src":"919:2:2"},"returnParameters":{"id":168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":167,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":169,"src":"945:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":166,"name":"bytes32","nodeType":"ElementaryTypeName","src":"945:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"944:9:2"},"scope":318,"src":"895:59:2","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"7ecebe00","id":176,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":176,"src":"975:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":170,"name":"address","nodeType":"ElementaryTypeName","src":"975:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"974:15:2"},"returnParameters":{"id":175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":174,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":176,"src":"1013:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":173,"name":"uint","nodeType":"ElementaryTypeName","src":"1013:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1012:6:2"},"scope":318,"src":"959:60:2","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"d505accf","id":193,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":178,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":193,"src":"1041:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":177,"name":"address","nodeType":"ElementaryTypeName","src":"1041:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":180,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":193,"src":"1056:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":179,"name":"address","nodeType":"ElementaryTypeName","src":"1056:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":182,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":193,"src":"1073:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":181,"name":"uint","nodeType":"ElementaryTypeName","src":"1073:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":184,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":193,"src":"1085:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":183,"name":"uint","nodeType":"ElementaryTypeName","src":"1085:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":186,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","overrides":null,"scope":193,"src":"1100:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":185,"name":"uint8","nodeType":"ElementaryTypeName","src":"1100:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":188,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":193,"src":"1109:9:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":187,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1109:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":190,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","overrides":null,"scope":193,"src":"1120:9:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":189,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1120:7:2","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"1040:90:2"},"returnParameters":{"id":192,"nodeType":"ParameterList","parameters":[],"src":"1139:0:2"},"scope":318,"src":"1025:115:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"anonymous":false,"documentation":null,"id":201,"name":"Mint","nodeType":"EventDefinition","parameters":{"id":200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":195,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","overrides":null,"scope":201,"src":"1157:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":194,"name":"address","nodeType":"ElementaryTypeName","src":"1157:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":197,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","overrides":null,"scope":201,"src":"1181:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":196,"name":"uint","nodeType":"ElementaryTypeName","src":"1181:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":199,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","overrides":null,"scope":201,"src":"1195:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":198,"name":"uint","nodeType":"ElementaryTypeName","src":"1195:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1156:52:2"},"src":"1146:63:2"},{"anonymous":false,"documentation":null,"id":211,"name":"Burn","nodeType":"EventDefinition","parameters":{"id":210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":203,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","overrides":null,"scope":211,"src":"1225:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":202,"name":"address","nodeType":"ElementaryTypeName","src":"1225:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":205,"indexed":false,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","overrides":null,"scope":211,"src":"1249:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":204,"name":"uint","nodeType":"ElementaryTypeName","src":"1249:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":207,"indexed":false,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","overrides":null,"scope":211,"src":"1263:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":206,"name":"uint","nodeType":"ElementaryTypeName","src":"1263:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":209,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":211,"src":"1277:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":208,"name":"address","nodeType":"ElementaryTypeName","src":"1277:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1224:72:2"},"src":"1214:83:2"},{"anonymous":false,"documentation":null,"id":225,"name":"Swap","nodeType":"EventDefinition","parameters":{"id":224,"nodeType":"ParameterList","parameters":[{"constant":false,"id":213,"indexed":true,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","overrides":null,"scope":225,"src":"1322:22:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":212,"name":"address","nodeType":"ElementaryTypeName","src":"1322:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":215,"indexed":false,"mutability":"mutable","name":"amount0In","nodeType":"VariableDeclaration","overrides":null,"scope":225,"src":"1354:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":214,"name":"uint","nodeType":"ElementaryTypeName","src":"1354:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":217,"indexed":false,"mutability":"mutable","name":"amount1In","nodeType":"VariableDeclaration","overrides":null,"scope":225,"src":"1378:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":216,"name":"uint","nodeType":"ElementaryTypeName","src":"1378:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":219,"indexed":false,"mutability":"mutable","name":"amount0Out","nodeType":"VariableDeclaration","overrides":null,"scope":225,"src":"1402:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":218,"name":"uint","nodeType":"ElementaryTypeName","src":"1402:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":221,"indexed":false,"mutability":"mutable","name":"amount1Out","nodeType":"VariableDeclaration","overrides":null,"scope":225,"src":"1427:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":220,"name":"uint","nodeType":"ElementaryTypeName","src":"1427:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":223,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":225,"src":"1452:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"1452:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1312:164:2"},"src":"1302:175:2"},{"anonymous":false,"documentation":null,"id":231,"name":"Sync","nodeType":"EventDefinition","parameters":{"id":230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":227,"indexed":false,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","overrides":null,"scope":231,"src":"1493:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":226,"name":"uint112","nodeType":"ElementaryTypeName","src":"1493:7:2","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"},{"constant":false,"id":229,"indexed":false,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","overrides":null,"scope":231,"src":"1511:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":228,"name":"uint112","nodeType":"ElementaryTypeName","src":"1511:7:2","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"}],"src":"1492:36:2"},"src":"1482:47:2"},{"body":null,"documentation":null,"functionSelector":"ba9a7a56","id":236,"implemented":false,"kind":"function","modifiers":[],"name":"MINIMUM_LIQUIDITY","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":232,"nodeType":"ParameterList","parameters":[],"src":"1561:2:2"},"returnParameters":{"id":235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":234,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":236,"src":"1587:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":233,"name":"uint","nodeType":"ElementaryTypeName","src":"1587:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1586:6:2"},"scope":318,"src":"1535:58:2","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"c45a0155","id":241,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":237,"nodeType":"ParameterList","parameters":[],"src":"1614:2:2"},"returnParameters":{"id":240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":239,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":241,"src":"1640:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":238,"name":"address","nodeType":"ElementaryTypeName","src":"1640:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1639:9:2"},"scope":318,"src":"1598:51:2","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"0dfe1681","id":246,"implemented":false,"kind":"function","modifiers":[],"name":"token0","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":242,"nodeType":"ParameterList","parameters":[],"src":"1669:2:2"},"returnParameters":{"id":245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":244,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":246,"src":"1695:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":243,"name":"address","nodeType":"ElementaryTypeName","src":"1695:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1694:9:2"},"scope":318,"src":"1654:50:2","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"d21220a7","id":251,"implemented":false,"kind":"function","modifiers":[],"name":"token1","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":247,"nodeType":"ParameterList","parameters":[],"src":"1724:2:2"},"returnParameters":{"id":250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":249,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":251,"src":"1750:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":248,"name":"address","nodeType":"ElementaryTypeName","src":"1750:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1749:9:2"},"scope":318,"src":"1709:50:2","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"0902f1ac","id":260,"implemented":false,"kind":"function","modifiers":[],"name":"getReserves","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":252,"nodeType":"ParameterList","parameters":[],"src":"1784:2:2"},"returnParameters":{"id":259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":254,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","overrides":null,"scope":260,"src":"1810:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":253,"name":"uint112","nodeType":"ElementaryTypeName","src":"1810:7:2","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"},{"constant":false,"id":256,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","overrides":null,"scope":260,"src":"1828:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":255,"name":"uint112","nodeType":"ElementaryTypeName","src":"1828:7:2","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"},{"constant":false,"id":258,"mutability":"mutable","name":"blockTimestampLast","nodeType":"VariableDeclaration","overrides":null,"scope":260,"src":"1846:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":257,"name":"uint32","nodeType":"ElementaryTypeName","src":"1846:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"src":"1809:63:2"},"scope":318,"src":"1764:109:2","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"5909c0d5","id":265,"implemented":false,"kind":"function","modifiers":[],"name":"price0CumulativeLast","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":261,"nodeType":"ParameterList","parameters":[],"src":"1907:2:2"},"returnParameters":{"id":264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":263,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":265,"src":"1933:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":262,"name":"uint","nodeType":"ElementaryTypeName","src":"1933:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1932:6:2"},"scope":318,"src":"1878:61:2","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"5a3d5493","id":270,"implemented":false,"kind":"function","modifiers":[],"name":"price1CumulativeLast","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":266,"nodeType":"ParameterList","parameters":[],"src":"1973:2:2"},"returnParameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":270,"src":"1999:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":267,"name":"uint","nodeType":"ElementaryTypeName","src":"1999:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1998:6:2"},"scope":318,"src":"1944:61:2","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"7464fc3d","id":275,"implemented":false,"kind":"function","modifiers":[],"name":"kLast","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":271,"nodeType":"ParameterList","parameters":[],"src":"2024:2:2"},"returnParameters":{"id":274,"nodeType":"ParameterList","parameters":[{"constant":false,"id":273,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":275,"src":"2050:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":272,"name":"uint","nodeType":"ElementaryTypeName","src":"2050:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2049:6:2"},"scope":318,"src":"2010:46:2","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"6a627842","id":282,"implemented":false,"kind":"function","modifiers":[],"name":"mint","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":277,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":282,"src":"2076:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":276,"name":"address","nodeType":"ElementaryTypeName","src":"2076:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2075:12:2"},"returnParameters":{"id":281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":280,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":282,"src":"2106:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":279,"name":"uint","nodeType":"ElementaryTypeName","src":"2106:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2105:16:2"},"scope":318,"src":"2062:60:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"89afcb44","id":291,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":284,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":291,"src":"2141:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":283,"name":"address","nodeType":"ElementaryTypeName","src":"2141:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2140:12:2"},"returnParameters":{"id":290,"nodeType":"ParameterList","parameters":[{"constant":false,"id":287,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","overrides":null,"scope":291,"src":"2171:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":286,"name":"uint","nodeType":"ElementaryTypeName","src":"2171:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":289,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","overrides":null,"scope":291,"src":"2185:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":288,"name":"uint","nodeType":"ElementaryTypeName","src":"2185:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2170:28:2"},"scope":318,"src":"2127:72:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"022c0d9f","id":302,"implemented":false,"kind":"function","modifiers":[],"name":"swap","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":300,"nodeType":"ParameterList","parameters":[{"constant":false,"id":293,"mutability":"mutable","name":"amount0Out","nodeType":"VariableDeclaration","overrides":null,"scope":302,"src":"2218:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":292,"name":"uint","nodeType":"ElementaryTypeName","src":"2218:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":295,"mutability":"mutable","name":"amount1Out","nodeType":"VariableDeclaration","overrides":null,"scope":302,"src":"2235:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":294,"name":"uint","nodeType":"ElementaryTypeName","src":"2235:4:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":297,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":302,"src":"2252:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":296,"name":"address","nodeType":"ElementaryTypeName","src":"2252:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":299,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","overrides":null,"scope":302,"src":"2264:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":298,"name":"bytes","nodeType":"ElementaryTypeName","src":"2264:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"2217:67:2"},"returnParameters":{"id":301,"nodeType":"ParameterList","parameters":[],"src":"2293:0:2"},"scope":318,"src":"2204:90:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"bc25cf77","id":307,"implemented":false,"kind":"function","modifiers":[],"name":"skim","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":304,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":307,"src":"2313:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":303,"name":"address","nodeType":"ElementaryTypeName","src":"2313:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2312:12:2"},"returnParameters":{"id":306,"nodeType":"ParameterList","parameters":[],"src":"2333:0:2"},"scope":318,"src":"2299:35:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"fff6cae9","id":310,"implemented":false,"kind":"function","modifiers":[],"name":"sync","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":308,"nodeType":"ParameterList","parameters":[],"src":"2352:2:2"},"returnParameters":{"id":309,"nodeType":"ParameterList","parameters":[],"src":"2363:0:2"},"scope":318,"src":"2339:25:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"485cc955","id":317,"implemented":false,"kind":"function","modifiers":[],"name":"initialize","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":317,"src":"2390:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":311,"name":"address","nodeType":"ElementaryTypeName","src":"2390:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":314,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":317,"src":"2399:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":313,"name":"address","nodeType":"ElementaryTypeName","src":"2399:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2389:18:2"},"returnParameters":{"id":316,"nodeType":"ParameterList","parameters":[],"src":"2416:0:2"},"scope":318,"src":"2370:47:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":319,"src":"26:2393:2"}],"src":"0:2420:2"},"id":2},"contracts/periphery/AstraMigrator.sol":{"ast":{"absolutePath":"contracts/periphery/AstraMigrator.sol","exportedSymbols":{"AstraMigrator":[488]},"id":489,"nodeType":"SourceUnit","nodes":[{"id":320,"literals":["solidity","=","0.6",".6"],"nodeType":"PragmaDirective","src":"0:23:3"},{"absolutePath":"contracts/periphery/libraries/TransferHelper.sol","file":"./libraries/TransferHelper.sol","id":321,"nodeType":"ImportDirective","scope":489,"sourceUnit":8464,"src":"25:40:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/IAstraMigrator.sol","file":"./interfaces/IAstraMigrator.sol","id":322,"nodeType":"ImportDirective","scope":489,"sourceUnit":5287,"src":"67:41:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/V1/IAstraV1Factory.sol","file":"./interfaces/V1/IAstraV1Factory.sol","id":323,"nodeType":"ImportDirective","scope":489,"sourceUnit":5853,"src":"109:45:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/V1/IAstraV1Exchange.sol","file":"./interfaces/V1/IAstraV1Exchange.sol","id":324,"nodeType":"ImportDirective","scope":489,"sourceUnit":5843,"src":"155:46:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/IAstraRouter01.sol","file":"./interfaces/IAstraRouter01.sol","id":325,"nodeType":"ImportDirective","scope":489,"sourceUnit":5595,"src":"202:41:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/IERC20.sol","file":"./interfaces/IERC20.sol","id":326,"nodeType":"ImportDirective","scope":489,"sourceUnit":5767,"src":"244:33:3","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":327,"name":"IAstraMigrator","nodeType":"UserDefinedTypeName","referencedDeclaration":5286,"src":"305:14:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraMigrator_$5286","typeString":"contract IAstraMigrator"}},"id":328,"nodeType":"InheritanceSpecifier","src":"305:14:3"}],"contractDependencies":[5286],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":488,"linearizedBaseContracts":[488,5286],"name":"AstraMigrator","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":330,"mutability":"immutable","name":"factoryV1","nodeType":"VariableDeclaration","overrides":null,"scope":488,"src":"326:35:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Factory_$5852","typeString":"contract IAstraV1Factory"},"typeName":{"contractScope":null,"id":329,"name":"IAstraV1Factory","nodeType":"UserDefinedTypeName","referencedDeclaration":5852,"src":"326:15:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Factory_$5852","typeString":"contract IAstraV1Factory"}},"value":null,"visibility":"internal"},{"constant":false,"id":332,"mutability":"immutable","name":"router","nodeType":"VariableDeclaration","overrides":null,"scope":488,"src":"367:31:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"},"typeName":{"contractScope":null,"id":331,"name":"IAstraRouter01","nodeType":"UserDefinedTypeName","referencedDeclaration":5594,"src":"367:14:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"value":null,"visibility":"internal"},{"body":{"id":351,"nodeType":"Block","src":"461:98:3","statements":[{"expression":{"argumentTypes":null,"id":343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":339,"name":"factoryV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"471:9:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Factory_$5852","typeString":"contract IAstraV1Factory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":341,"name":"_factoryV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"499:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":340,"name":"IAstraV1Factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5852,"src":"483:15:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraV1Factory_$5852_$","typeString":"type(contract IAstraV1Factory)"}},"id":342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"483:27:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Factory_$5852","typeString":"contract IAstraV1Factory"}},"src":"471:39:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Factory_$5852","typeString":"contract IAstraV1Factory"}},"id":344,"nodeType":"ExpressionStatement","src":"471:39:3"},{"expression":{"argumentTypes":null,"id":349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":345,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":332,"src":"520:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":347,"name":"_router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":336,"src":"544:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":346,"name":"IAstraRouter01","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5594,"src":"529:14:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraRouter01_$5594_$","typeString":"type(contract IAstraRouter01)"}},"id":348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"529:23:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"src":"520:32:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":350,"nodeType":"ExpressionStatement","src":"520:32:3"}]},"documentation":null,"id":352,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":334,"mutability":"mutable","name":"_factoryV1","nodeType":"VariableDeclaration","overrides":null,"scope":352,"src":"417:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":333,"name":"address","nodeType":"ElementaryTypeName","src":"417:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":336,"mutability":"mutable","name":"_router","nodeType":"VariableDeclaration","overrides":null,"scope":352,"src":"437:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":335,"name":"address","nodeType":"ElementaryTypeName","src":"437:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"416:37:3"},"returnParameters":{"id":338,"nodeType":"ParameterList","parameters":[],"src":"461:0:3"},"scope":488,"src":"405:154:3","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":355,"nodeType":"Block","src":"806:2:3","statements":[]},"documentation":null,"id":356,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":353,"nodeType":"ParameterList","parameters":[],"src":"786:2:3"},"returnParameters":{"id":354,"nodeType":"ParameterList","parameters":[],"src":"806:0:3"},"scope":488,"src":"779:29:3","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[5285],"body":{"id":486,"nodeType":"Block","src":"951:1202:3","statements":[{"assignments":[371],"declarations":[{"constant":false,"id":371,"mutability":"mutable","name":"exchangeV1","nodeType":"VariableDeclaration","overrides":null,"scope":486,"src":"961:27:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"},"typeName":{"contractScope":null,"id":370,"name":"IAstraV1Exchange","nodeType":"UserDefinedTypeName","referencedDeclaration":5842,"src":"961:16:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"}},"value":null,"visibility":"internal"}],"id":378,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":375,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":358,"src":"1030:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":373,"name":"factoryV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"1008:9:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Factory_$5852","typeString":"contract IAstraV1Factory"}},"id":374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getExchange","nodeType":"MemberAccess","referencedDeclaration":5851,"src":"1008:21:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$","typeString":"function (address) view external returns (address)"}},"id":376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1008:28:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":372,"name":"IAstraV1Exchange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"991:16:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraV1Exchange_$5842_$","typeString":"type(contract IAstraV1Exchange)"}},"id":377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"991:46:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"}},"nodeType":"VariableDeclarationStatement","src":"961:76:3"},{"assignments":[380],"declarations":[{"constant":false,"id":380,"mutability":"mutable","name":"liquidityV1","nodeType":"VariableDeclaration","overrides":null,"scope":486,"src":"1047:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":379,"name":"uint","nodeType":"ElementaryTypeName","src":"1047:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":386,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":383,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1087:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1087:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":null,"id":381,"name":"exchangeV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":371,"src":"1066:10:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"}},"id":382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5795,"src":"1066:20:3","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1066:32:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1047:51:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":390,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1140:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1140:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":394,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1160:4:3","typeDescriptions":{"typeIdentifier":"t_contract$_AstraMigrator_$488","typeString":"contract AstraMigrator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraMigrator_$488","typeString":"contract AstraMigrator"}],"id":393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1152:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":392,"name":"address","nodeType":"ElementaryTypeName","src":"1152:7:3","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1152:13:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":396,"name":"liquidityV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"1167:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":388,"name":"exchangeV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":371,"src":"1116:10:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"}},"id":389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":5806,"src":"1116:23:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1116:63:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5452414e534645525f46524f4d5f4641494c4544","id":398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1181:22:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7","typeString":"literal_string \"TRANSFER_FROM_FAILED\""},"value":"TRANSFER_FROM_FAILED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_77631768048ee92f9dcf4b9b9d762877d6b9723214862c733f0596708fc219b7","typeString":"literal_string \"TRANSFER_FROM_FAILED\""}],"id":387,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1108:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1108:96:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":400,"nodeType":"ExpressionStatement","src":"1108:96:3"},{"assignments":[402,404],"declarations":[{"constant":false,"id":402,"mutability":"mutable","name":"amountAMBV1","nodeType":"VariableDeclaration","overrides":null,"scope":486,"src":"1215:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":401,"name":"uint","nodeType":"ElementaryTypeName","src":"1215:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":404,"mutability":"mutable","name":"amountTokenV1","nodeType":"VariableDeclaration","overrides":null,"scope":486,"src":"1233:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":403,"name":"uint","nodeType":"ElementaryTypeName","src":"1233:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":416,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":407,"name":"liquidityV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":380,"src":"1282:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"31","id":408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1295:1:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"argumentTypes":null,"hexValue":"31","id":409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1298:1:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":413,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1306:2:3","subExpression":{"argumentTypes":null,"hexValue":"31","id":412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1307:1:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1301:4:3","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":410,"name":"uint","nodeType":"ElementaryTypeName","src":"1301:4:3","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1301:8:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":405,"name":"exchangeV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":371,"src":"1255:10:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"}},"id":406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"removeLiquidity","nodeType":"MemberAccess","referencedDeclaration":5821,"src":"1255:26:3","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256) external returns (uint256,uint256)"}},"id":415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1255:55:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1214:96:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":420,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":358,"src":"1347:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":423,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":332,"src":"1362:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}],"id":422,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1354:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":421,"name":"address","nodeType":"ElementaryTypeName","src":"1354:7:3","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1354:15:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":425,"name":"amountTokenV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":404,"src":"1371:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":417,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"1320:14:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":8348,"src":"1320:26:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":426,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1320:65:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":427,"nodeType":"ExpressionStatement","src":"1320:65:3"},{"assignments":[429,431,null],"declarations":[{"constant":false,"id":429,"mutability":"mutable","name":"amountTokenV2","nodeType":"VariableDeclaration","overrides":null,"scope":486,"src":"1396:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":428,"name":"uint","nodeType":"ElementaryTypeName","src":"1396:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":431,"mutability":"mutable","name":"amountAMBV2","nodeType":"VariableDeclaration","overrides":null,"scope":486,"src":"1416:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":430,"name":"uint","nodeType":"ElementaryTypeName","src":"1416:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":443,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":436,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":358,"src":"1493:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":437,"name":"amountTokenV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":404,"src":"1512:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":438,"name":"amountTokenMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"1539:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":439,"name":"amountAMBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":362,"src":"1567:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":440,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"1593:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":441,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":366,"src":"1609:8:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":432,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":332,"src":"1437:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"addLiquidityAMB","nodeType":"MemberAccess","referencedDeclaration":5344,"src":"1437:22:3","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,uint256,uint256,address,uint256) payable external returns (uint256,uint256,uint256)"}},"id":435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"argumentTypes":null,"id":434,"name":"amountAMBV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1467:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1437:42:3","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$value","typeString":"function (address,uint256,uint256,uint256,address,uint256) payable external returns (uint256,uint256,uint256)"}},"id":442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1437:190:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1395:232:3"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":444,"name":"amountTokenV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":404,"src":"1641:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":445,"name":"amountTokenV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"1657:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1641:29:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":470,"name":"amountAMBV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"1905:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":471,"name":"amountAMBV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"1919:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1905:25:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":484,"nodeType":"IfStatement","src":"1901:246:3","trueBody":{"id":483,"nodeType":"Block","src":"1932:215:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":476,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2098:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2098:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":478,"name":"amountAMBV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":402,"src":"2110:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":479,"name":"amountAMBV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":431,"src":"2124:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2110:25:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":473,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"2067:14:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"2067:30:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2067:69:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":482,"nodeType":"ExpressionStatement","src":"2067:69:3"}]}},"id":485,"nodeType":"IfStatement","src":"1637:510:3","trueBody":{"id":469,"nodeType":"Block","src":"1672:223:3","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":450,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":358,"src":"1713:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":453,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":332,"src":"1728:6:3","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}],"id":452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1720:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":451,"name":"address","nodeType":"ElementaryTypeName","src":"1720:7:3","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1720:15:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"hexValue":"30","id":455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1737:1:3","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"argumentTypes":null,"id":447,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"1686:14:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":8348,"src":"1686:26:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1686:53:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":457,"nodeType":"ExpressionStatement","src":"1686:53:3"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":461,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":358,"src":"1835:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":462,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1842:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1842:10:3","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":464,"name":"amountTokenV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":404,"src":"1854:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":465,"name":"amountTokenV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":429,"src":"1870:13:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1854:29:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":458,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"1807:14:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8391,"src":"1807:27:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1807:77:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":468,"nodeType":"ExpressionStatement","src":"1807:77:3"}]}}]},"documentation":null,"functionSelector":"b7df1d25","id":487,"implemented":true,"kind":"function","modifiers":[],"name":"migrate","nodeType":"FunctionDefinition","overrides":{"id":368,"nodeType":"OverrideSpecifier","overrides":[],"src":"938:8:3"},"parameters":{"id":367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":358,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":487,"src":"831:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":357,"name":"address","nodeType":"ElementaryTypeName","src":"831:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":360,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":487,"src":"846:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":359,"name":"uint","nodeType":"ElementaryTypeName","src":"846:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":487,"src":"867:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint","nodeType":"ElementaryTypeName","src":"867:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":364,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":487,"src":"886:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":363,"name":"address","nodeType":"ElementaryTypeName","src":"886:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":366,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":487,"src":"898:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":365,"name":"uint","nodeType":"ElementaryTypeName","src":"898:4:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"830:82:3"},"returnParameters":{"id":369,"nodeType":"ParameterList","parameters":[],"src":"951:0:3"},"scope":488,"src":"814:1339:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":489,"src":"279:1876:3"}],"src":"0:2156:3"},"id":3},"contracts/periphery/AstraRouter01.sol":{"ast":{"absolutePath":"contracts/periphery/AstraRouter01.sol","exportedSymbols":{"AstraRouter01":[1946]},"id":1947,"nodeType":"SourceUnit","nodes":[{"id":490,"literals":["solidity","=","0.6",".6"],"nodeType":"PragmaDirective","src":"0:23:4"},{"absolutePath":"contracts/core/interfaces/IAstraFactory.sol","file":"../core/interfaces/IAstraFactory.sol","id":491,"nodeType":"ImportDirective","scope":1947,"sourceUnit":77,"src":"25:46:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/TransferHelper.sol","file":"./libraries/TransferHelper.sol","id":492,"nodeType":"ImportDirective","scope":1947,"sourceUnit":8464,"src":"72:40:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/AstraLibrary.sol","file":"./libraries/AstraLibrary.sol","id":493,"nodeType":"ImportDirective","scope":1947,"sourceUnit":6325,"src":"114:38:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/IAstraRouter01.sol","file":"./interfaces/IAstraRouter01.sol","id":494,"nodeType":"ImportDirective","scope":1947,"sourceUnit":5595,"src":"153:41:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/IERC20.sol","file":"./interfaces/IERC20.sol","id":495,"nodeType":"ImportDirective","scope":1947,"sourceUnit":5767,"src":"195:33:4","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/ISAMB.sol","file":"./interfaces/ISAMB.sol","id":496,"nodeType":"ImportDirective","scope":1947,"sourceUnit":5787,"src":"229:32:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":497,"name":"IAstraRouter01","nodeType":"UserDefinedTypeName","referencedDeclaration":5594,"src":"289:14:4","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":498,"nodeType":"InheritanceSpecifier","src":"289:14:4"}],"contractDependencies":[5594],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":1946,"linearizedBaseContracts":[1946,5594],"name":"AstraRouter01","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[5293],"constant":false,"functionSelector":"c45a0155","id":501,"mutability":"immutable","name":"factory","nodeType":"VariableDeclaration","overrides":{"id":500,"nodeType":"OverrideSpecifier","overrides":[],"src":"335:8:4"},"scope":1946,"src":"310:41:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":499,"name":"address","nodeType":"ElementaryTypeName","src":"310:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"baseFunctions":[5298],"constant":false,"functionSelector":"90793ea8","id":504,"mutability":"immutable","name":"SAMB","nodeType":"VariableDeclaration","overrides":{"id":503,"nodeType":"OverrideSpecifier","overrides":[],"src":"382:8:4"},"scope":1946,"src":"357:38:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":502,"name":"address","nodeType":"ElementaryTypeName","src":"357:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"body":{"id":517,"nodeType":"Block","src":"436:88:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":509,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":506,"src":"454:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":510,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"466:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"466:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"454:27:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a2045585049524544","id":513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"483:22:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9a382d0105f64091ebabcac330882446698182189bd311d1ad5fbf603a47621d","typeString":"literal_string \"AstraRouter: EXPIRED\""},"value":"AstraRouter: EXPIRED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9a382d0105f64091ebabcac330882446698182189bd311d1ad5fbf603a47621d","typeString":"literal_string \"AstraRouter: EXPIRED\""}],"id":508,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"446:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"446:60:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":515,"nodeType":"ExpressionStatement","src":"446:60:4"},{"id":516,"nodeType":"PlaceholderStatement","src":"516:1:4"}]},"documentation":null,"id":518,"name":"ensure","nodeType":"ModifierDefinition","overrides":null,"parameters":{"id":507,"nodeType":"ParameterList","parameters":[{"constant":false,"id":506,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":518,"src":"418:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":505,"name":"uint256","nodeType":"ElementaryTypeName","src":"418:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"417:18:4"},"src":"402:122:4","virtual":false,"visibility":"internal"},{"body":{"id":533,"nodeType":"Block","src":"582:57:4","statements":[{"expression":{"argumentTypes":null,"id":527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":525,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"592:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":526,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":520,"src":"602:8:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"592:18:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":528,"nodeType":"ExpressionStatement","src":"592:18:4"},{"expression":{"argumentTypes":null,"id":531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":529,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"620:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":530,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":522,"src":"627:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"620:12:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":532,"nodeType":"ExpressionStatement","src":"620:12:4"}]},"documentation":null,"id":534,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":520,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","overrides":null,"scope":534,"src":"542:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":519,"name":"address","nodeType":"ElementaryTypeName","src":"542:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":522,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","overrides":null,"scope":534,"src":"560:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":521,"name":"address","nodeType":"ElementaryTypeName","src":"560:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"541:33:4"},"returnParameters":{"id":524,"nodeType":"ParameterList","parameters":[],"src":"582:0:4"},"scope":1946,"src":"530:109:4","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":544,"nodeType":"Block","src":"672:98:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":538,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"689:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"689:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":540,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"703:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"689:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":537,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"682:6:4","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"682:26:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":543,"nodeType":"ExpressionStatement","src":"682:26:4"}]},"documentation":null,"id":545,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":535,"nodeType":"ParameterList","parameters":[],"src":"652:2:4"},"returnParameters":{"id":536,"nodeType":"ParameterList","parameters":[],"src":"672:0:4"},"scope":1946,"src":"645:125:4","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":675,"nodeType":"Block","src":"1055:1410:4","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":568,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"1151:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":569,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":549,"src":"1159:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":565,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"1134:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":564,"name":"IAstraFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"1120:13:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraFactory_$76_$","typeString":"type(contract IAstraFactory)"}},"id":566,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1120:22:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraFactory_$76","typeString":"contract IAstraFactory"}},"id":567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPair","nodeType":"MemberAccess","referencedDeclaration":44,"src":"1120:30:4","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address) view external returns (address)"}},"id":570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1120:46:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1178:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1170:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":571,"name":"address","nodeType":"ElementaryTypeName","src":"1170:7:4","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1170:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1120:60:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":585,"nodeType":"IfStatement","src":"1116:140:4","trueBody":{"id":584,"nodeType":"Block","src":"1182:74:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":580,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"1230:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":581,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":549,"src":"1238:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":577,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"1210:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":576,"name":"IAstraFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"1196:13:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraFactory_$76_$","typeString":"type(contract IAstraFactory)"}},"id":578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1196:22:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraFactory_$76","typeString":"contract IAstraFactory"}},"id":579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"createPair","nodeType":"MemberAccess","referencedDeclaration":65,"src":"1196:33:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address) external returns (address)"}},"id":582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1196:49:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":583,"nodeType":"ExpressionStatement","src":"1196:49:4"}]}},{"assignments":[587,589],"declarations":[{"constant":false,"id":587,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","overrides":null,"scope":675,"src":"1266:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":586,"name":"uint256","nodeType":"ElementaryTypeName","src":"1266:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":589,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","overrides":null,"scope":675,"src":"1284:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":588,"name":"uint256","nodeType":"ElementaryTypeName","src":"1284:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":596,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":592,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"1342:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":593,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":547,"src":"1363:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":594,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":549,"src":"1383:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":590,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"1304:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":5998,"src":"1304:24:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address) view returns (uint256,uint256)"}},"id":595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1304:95:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1265:134:4"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":597,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"1413:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1425:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1413:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":600,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"1430:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1442:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1430:13:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1413:30:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":673,"nodeType":"Block","src":"1529:930:4","statements":[{"assignments":[614],"declarations":[{"constant":false,"id":614,"mutability":"mutable","name":"amountBOptimal","nodeType":"VariableDeclaration","overrides":null,"scope":673,"src":"1543:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":613,"name":"uint256","nodeType":"ElementaryTypeName","src":"1543:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":621,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":617,"name":"amountADesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"1604:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":618,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"1636:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":619,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"1662:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":615,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"1568:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":6037,"src":"1568:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1568:116:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1543:141:4"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":622,"name":"amountBOptimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":614,"src":"1702:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":623,"name":"amountBDesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"1720:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1702:32:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":671,"nodeType":"Block","src":"1979:470:4","statements":[{"assignments":[642],"declarations":[{"constant":false,"id":642,"mutability":"mutable","name":"amountAOptimal","nodeType":"VariableDeclaration","overrides":null,"scope":671,"src":"1997:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":641,"name":"uint256","nodeType":"ElementaryTypeName","src":"1997:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":649,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":645,"name":"amountBDesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"2062:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":646,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":589,"src":"2098:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":647,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":587,"src":"2128:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":643,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"2022:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":6037,"src":"2022:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2022:132:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1997:157:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":651,"name":"amountAOptimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":642,"src":"2179:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":652,"name":"amountADesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"2197:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2179:32:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":650,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2172:6:4","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2172:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":655,"nodeType":"ExpressionStatement","src":"2172:40:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":657,"name":"amountAOptimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":642,"src":"2259:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":658,"name":"amountAMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":555,"src":"2277:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2259:28:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f415f414d4f554e54","id":660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2309:36:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_2ce73a9732a49f98004004ddf06ca36be05456dc81445fabb043ca53be44fc43","typeString":"literal_string \"AstraRouter: INSUFFICIENT_A_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_A_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ce73a9732a49f98004004ddf06ca36be05456dc81445fabb043ca53be44fc43","typeString":"literal_string \"AstraRouter: INSUFFICIENT_A_AMOUNT\""}],"id":656,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2230:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2230:133:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":662,"nodeType":"ExpressionStatement","src":"2230:133:4"},{"expression":{"argumentTypes":null,"id":669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":663,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":560,"src":"2382:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":664,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"2391:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":665,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2381:18:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":666,"name":"amountAOptimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":642,"src":"2403:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":667,"name":"amountBDesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"2419:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":668,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2402:32:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"2381:53:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":670,"nodeType":"ExpressionStatement","src":"2381:53:4"}]},"id":672,"nodeType":"IfStatement","src":"1698:751:4","trueBody":{"id":640,"nodeType":"Block","src":"1736:237:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":626,"name":"amountBOptimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":614,"src":"1783:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":627,"name":"amountBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":557,"src":"1801:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1783:28:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f425f414d4f554e54","id":629,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1833:36:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_22ae76e92a0ba4a6b6ad73338d6c1fe0638411be34a5dc0f6b0e006c8ab4c3fa","typeString":"literal_string \"AstraRouter: INSUFFICIENT_B_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_B_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_22ae76e92a0ba4a6b6ad73338d6c1fe0638411be34a5dc0f6b0e006c8ab4c3fa","typeString":"literal_string \"AstraRouter: INSUFFICIENT_B_AMOUNT\""}],"id":625,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1754:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1754:133:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":631,"nodeType":"ExpressionStatement","src":"1754:133:4"},{"expression":{"argumentTypes":null,"id":638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":632,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":560,"src":"1906:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":633,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"1915:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":634,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1905:18:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":635,"name":"amountADesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"1927:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":636,"name":"amountBOptimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":614,"src":"1943:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":637,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1926:32:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"1905:53:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":639,"nodeType":"ExpressionStatement","src":"1905:53:4"}]}}]},"id":674,"nodeType":"IfStatement","src":"1409:1050:4","trueBody":{"id":612,"nodeType":"Block","src":"1445:78:4","statements":[{"expression":{"argumentTypes":null,"id":610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":604,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":560,"src":"1460:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":605,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":562,"src":"1469:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":606,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1459:18:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":607,"name":"amountADesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":551,"src":"1481:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":608,"name":"amountBDesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"1497:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":609,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1480:32:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"1459:53:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":611,"nodeType":"ExpressionStatement","src":"1459:53:4"}]}}]},"documentation":null,"id":676,"implemented":true,"kind":"function","modifiers":[],"name":"_addLiquidity","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":558,"nodeType":"ParameterList","parameters":[{"constant":false,"id":547,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":676,"src":"839:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":546,"name":"address","nodeType":"ElementaryTypeName","src":"839:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":549,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":676,"src":"863:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":548,"name":"address","nodeType":"ElementaryTypeName","src":"863:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":551,"mutability":"mutable","name":"amountADesired","nodeType":"VariableDeclaration","overrides":null,"scope":676,"src":"887:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":550,"name":"uint256","nodeType":"ElementaryTypeName","src":"887:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":553,"mutability":"mutable","name":"amountBDesired","nodeType":"VariableDeclaration","overrides":null,"scope":676,"src":"919:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":552,"name":"uint256","nodeType":"ElementaryTypeName","src":"919:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":555,"mutability":"mutable","name":"amountAMin","nodeType":"VariableDeclaration","overrides":null,"scope":676,"src":"951:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":554,"name":"uint256","nodeType":"ElementaryTypeName","src":"951:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":557,"mutability":"mutable","name":"amountBMin","nodeType":"VariableDeclaration","overrides":null,"scope":676,"src":"979:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":556,"name":"uint256","nodeType":"ElementaryTypeName","src":"979:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"829:174:4"},"returnParameters":{"id":563,"nodeType":"ParameterList","parameters":[{"constant":false,"id":560,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":676,"src":"1021:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":559,"name":"uint256","nodeType":"ElementaryTypeName","src":"1021:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":562,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":676,"src":"1038:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":561,"name":"uint256","nodeType":"ElementaryTypeName","src":"1038:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1020:34:4"},"scope":1946,"src":"807:1658:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[5323],"body":{"id":756,"nodeType":"Block","src":"2892:474:4","statements":[{"expression":{"argumentTypes":null,"id":716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":705,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"2903:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":706,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":701,"src":"2912:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":707,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2902:18:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":709,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":678,"src":"2950:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":710,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":680,"src":"2970:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":711,"name":"amountADesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"2990:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":712,"name":"amountBDesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":684,"src":"3018:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":713,"name":"amountAMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":686,"src":"3046:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":714,"name":"amountBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"3070:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":708,"name":"_addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"2923:13:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"}},"id":715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2923:167:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"2902:188:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":717,"nodeType":"ExpressionStatement","src":"2902:188:4"},{"assignments":[719],"declarations":[{"constant":false,"id":719,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":756,"src":"3100:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":718,"name":"address","nodeType":"ElementaryTypeName","src":"3100:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":726,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":722,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"3136:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":723,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":678,"src":"3145:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":724,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":680,"src":"3153:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":720,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"3115:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"3115:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3115:45:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3100:60:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":730,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":678,"src":"3202:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":731,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3210:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3210:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":733,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":719,"src":"3222:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":734,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":699,"src":"3228:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":727,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"3170:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"3170:31:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3170:66:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":736,"nodeType":"ExpressionStatement","src":"3170:66:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":740,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":680,"src":"3278:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":741,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3286:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3286:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":743,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":719,"src":"3298:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":744,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":701,"src":"3304:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":737,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"3246:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"3246:31:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3246:66:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":746,"nodeType":"ExpressionStatement","src":"3246:66:4"},{"expression":{"argumentTypes":null,"id":754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":747,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"3322:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":752,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":690,"src":"3356:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":749,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":719,"src":"3345:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":748,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"3334:10:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3334:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":282,"src":"3334:21:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3334:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3322:37:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":755,"nodeType":"ExpressionStatement","src":"3322:37:4"}]},"documentation":null,"functionSelector":"e8e33700","id":757,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":696,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":692,"src":"2762:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":697,"modifierName":{"argumentTypes":null,"id":695,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"2755:6:4","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"2755:16:4"}],"name":"addLiquidity","nodeType":"FunctionDefinition","overrides":{"id":694,"nodeType":"OverrideSpecifier","overrides":[],"src":"2738:8:4"},"parameters":{"id":693,"nodeType":"ParameterList","parameters":[{"constant":false,"id":678,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":757,"src":"2502:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":677,"name":"address","nodeType":"ElementaryTypeName","src":"2502:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":680,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":757,"src":"2526:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":679,"name":"address","nodeType":"ElementaryTypeName","src":"2526:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":682,"mutability":"mutable","name":"amountADesired","nodeType":"VariableDeclaration","overrides":null,"scope":757,"src":"2550:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":681,"name":"uint256","nodeType":"ElementaryTypeName","src":"2550:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":684,"mutability":"mutable","name":"amountBDesired","nodeType":"VariableDeclaration","overrides":null,"scope":757,"src":"2582:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":683,"name":"uint256","nodeType":"ElementaryTypeName","src":"2582:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":686,"mutability":"mutable","name":"amountAMin","nodeType":"VariableDeclaration","overrides":null,"scope":757,"src":"2614:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"2614:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":688,"mutability":"mutable","name":"amountBMin","nodeType":"VariableDeclaration","overrides":null,"scope":757,"src":"2642:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":687,"name":"uint256","nodeType":"ElementaryTypeName","src":"2642:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":690,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":757,"src":"2670:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":689,"name":"address","nodeType":"ElementaryTypeName","src":"2670:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":692,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":757,"src":"2690:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":691,"name":"uint256","nodeType":"ElementaryTypeName","src":"2690:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2492:220:4"},"returnParameters":{"id":704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":699,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":757,"src":"2802:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":698,"name":"uint256","nodeType":"ElementaryTypeName","src":"2802:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":701,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":757,"src":"2831:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":700,"name":"uint256","nodeType":"ElementaryTypeName","src":"2831:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":703,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":757,"src":"2860:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":702,"name":"uint256","nodeType":"ElementaryTypeName","src":"2860:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2788:99:4"},"scope":1946,"src":"2471:895:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5344],"body":{"id":858,"nodeType":"Block","src":"3771:651:4","statements":[{"expression":{"argumentTypes":null,"id":794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":782,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"3782:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":783,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"3795:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":784,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3781:24:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":786,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":759,"src":"3835:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":787,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"3854:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":788,"name":"amountTokenDesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":761,"src":"3872:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":789,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3904:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3904:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":791,"name":"amountTokenMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":763,"src":"3927:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":792,"name":"amountAMBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":765,"src":"3955:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":785,"name":"_addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"3808:13:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"}},"id":793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3808:169:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"3781:196:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":795,"nodeType":"ExpressionStatement","src":"3781:196:4"},{"assignments":[797],"declarations":[{"constant":false,"id":797,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":858,"src":"3987:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":796,"name":"address","nodeType":"ElementaryTypeName","src":"3987:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":804,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":800,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"4023:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":801,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":759,"src":"4032:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":802,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"4039:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":798,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"4002:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"4002:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4002:42:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3987:57:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":808,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":759,"src":"4086:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":809,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4093:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4093:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":811,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"4105:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":812,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"4111:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":805,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"4054:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"4054:31:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4054:69:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":814,"nodeType":"ExpressionStatement","src":"4054:69:4"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":816,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"4139:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":815,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"4133:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4133:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":5771,"src":"4133:19:4","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"argumentTypes":null,"id":819,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"4160:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4133:37:4","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4133:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":822,"nodeType":"ExpressionStatement","src":"4133:39:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":828,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"4210:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":829,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"4216:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":825,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"4195:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":824,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"4189:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4189:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"4189:20:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4189:37:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":823,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"4182:6:4","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4182:45:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":832,"nodeType":"ExpressionStatement","src":"4182:45:4"},{"expression":{"argumentTypes":null,"id":840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":833,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":780,"src":"4237:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":838,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":767,"src":"4271:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":835,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":797,"src":"4260:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":834,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"4249:10:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4249:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":282,"src":"4249:21:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4249:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4237:37:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":841,"nodeType":"ExpressionStatement","src":"4237:37:4"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":842,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4288:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4288:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":844,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"4300:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4288:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":857,"nodeType":"IfStatement","src":"4284:104:4","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":849,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4354:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4354:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":851,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4366:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4366:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":853,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":778,"src":"4378:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4366:21:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":846,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"4323:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":848,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"4323:30:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4323:65:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":856,"nodeType":"ExpressionStatement","src":"4323:65:4"}}]},"documentation":null,"functionSelector":"84b0b3a2","id":859,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":773,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":769,"src":"3635:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":774,"modifierName":{"argumentTypes":null,"id":772,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"3628:6:4","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"3628:16:4"}],"name":"addLiquidityAMB","nodeType":"FunctionDefinition","overrides":{"id":771,"nodeType":"OverrideSpecifier","overrides":[],"src":"3611:8:4"},"parameters":{"id":770,"nodeType":"ParameterList","parameters":[{"constant":false,"id":759,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":859,"src":"3406:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":758,"name":"address","nodeType":"ElementaryTypeName","src":"3406:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":761,"mutability":"mutable","name":"amountTokenDesired","nodeType":"VariableDeclaration","overrides":null,"scope":859,"src":"3429:26:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":760,"name":"uint256","nodeType":"ElementaryTypeName","src":"3429:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":763,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":859,"src":"3465:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":762,"name":"uint256","nodeType":"ElementaryTypeName","src":"3465:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":765,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":859,"src":"3497:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":764,"name":"uint256","nodeType":"ElementaryTypeName","src":"3497:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":767,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":859,"src":"3527:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":766,"name":"address","nodeType":"ElementaryTypeName","src":"3527:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":769,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":859,"src":"3547:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":768,"name":"uint256","nodeType":"ElementaryTypeName","src":"3547:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3396:173:4"},"returnParameters":{"id":781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":776,"mutability":"mutable","name":"amountToken","nodeType":"VariableDeclaration","overrides":null,"scope":859,"src":"3675:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":775,"name":"uint256","nodeType":"ElementaryTypeName","src":"3675:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":778,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":859,"src":"3708:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":777,"name":"uint256","nodeType":"ElementaryTypeName","src":"3708:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":780,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":859,"src":"3739:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":779,"name":"uint256","nodeType":"ElementaryTypeName","src":"3739:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3661:105:4"},"scope":1946,"src":"3372:1050:4","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[5365],"body":{"id":951,"nodeType":"Block","src":"4782:650:4","statements":[{"assignments":[885],"declarations":[{"constant":false,"id":885,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":951,"src":"4792:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":884,"name":"address","nodeType":"ElementaryTypeName","src":"4792:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":892,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":888,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"4828:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":889,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"4837:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":890,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"4845:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":886,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"4807:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"4807:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4807:45:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4792:60:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":897,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4892:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4892:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":899,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"4904:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":900,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":865,"src":"4910:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":894,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"4873:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":893,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"4862:10:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":895,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4862:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":159,"src":"4862:29:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4862:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":902,"nodeType":"ExpressionStatement","src":"4862:58:4"},{"assignments":[904,906],"declarations":[{"constant":false,"id":904,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","overrides":null,"scope":951,"src":"4957:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":903,"name":"uint256","nodeType":"ElementaryTypeName","src":"4957:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":906,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","overrides":null,"scope":951,"src":"4974:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":905,"name":"uint256","nodeType":"ElementaryTypeName","src":"4974:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":913,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":911,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":871,"src":"5015:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":908,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"5004:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":907,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"4993:10:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4993:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":291,"src":"4993:21:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address) external returns (uint256,uint256)"}},"id":912,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4993:25:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4956:62:4"},{"assignments":[915,null],"declarations":[{"constant":false,"id":915,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","overrides":null,"scope":951,"src":"5029:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":914,"name":"address","nodeType":"ElementaryTypeName","src":"5029:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},null],"id":921,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":918,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"5073:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":919,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":863,"src":"5081:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":916,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"5049:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sortTokens","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"5049:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5049:39:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"5028:60:4"},{"expression":{"argumentTypes":null,"id":935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":922,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"5099:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":923,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"5108:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":924,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5098:18:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":925,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"5119:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":926,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":915,"src":"5129:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5119:16:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":931,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"5184:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":932,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"5193:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":933,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5183:18:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5119:82:4","trueExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":928,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":904,"src":"5151:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":929,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"5160:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":930,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5150:18:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5098:103:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":936,"nodeType":"ExpressionStatement","src":"5098:103:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":938,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"5232:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":939,"name":"amountAMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":867,"src":"5243:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5232:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f415f414d4f554e54","id":941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5267:36:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_2ce73a9732a49f98004004ddf06ca36be05456dc81445fabb043ca53be44fc43","typeString":"literal_string \"AstraRouter: INSUFFICIENT_A_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_A_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ce73a9732a49f98004004ddf06ca36be05456dc81445fabb043ca53be44fc43","typeString":"literal_string \"AstraRouter: INSUFFICIENT_A_AMOUNT\""}],"id":937,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5211:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5211:102:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":943,"nodeType":"ExpressionStatement","src":"5211:102:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":945,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":882,"src":"5344:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":946,"name":"amountBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":869,"src":"5355:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5344:21:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f425f414d4f554e54","id":948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5379:36:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_22ae76e92a0ba4a6b6ad73338d6c1fe0638411be34a5dc0f6b0e006c8ab4c3fa","typeString":"literal_string \"AstraRouter: INSUFFICIENT_B_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_B_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_22ae76e92a0ba4a6b6ad73338d6c1fe0638411be34a5dc0f6b0e006c8ab4c3fa","typeString":"literal_string \"AstraRouter: INSUFFICIENT_B_AMOUNT\""}],"id":944,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5323:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5323:102:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":950,"nodeType":"ExpressionStatement","src":"5323:102:4"}]},"documentation":null,"functionSelector":"baa2abde","id":952,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":877,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":873,"src":"4717:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":878,"modifierName":{"argumentTypes":null,"id":876,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"4710:6:4","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"4710:16:4"}],"name":"removeLiquidity","nodeType":"FunctionDefinition","overrides":{"id":875,"nodeType":"OverrideSpecifier","overrides":[],"src":"4693:8:4"},"parameters":{"id":874,"nodeType":"ParameterList","parameters":[{"constant":false,"id":861,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":952,"src":"4496:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":860,"name":"address","nodeType":"ElementaryTypeName","src":"4496:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":863,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":952,"src":"4520:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":862,"name":"address","nodeType":"ElementaryTypeName","src":"4520:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":865,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":952,"src":"4544:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":864,"name":"uint256","nodeType":"ElementaryTypeName","src":"4544:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":867,"mutability":"mutable","name":"amountAMin","nodeType":"VariableDeclaration","overrides":null,"scope":952,"src":"4571:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":866,"name":"uint256","nodeType":"ElementaryTypeName","src":"4571:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":869,"mutability":"mutable","name":"amountBMin","nodeType":"VariableDeclaration","overrides":null,"scope":952,"src":"4599:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":868,"name":"uint256","nodeType":"ElementaryTypeName","src":"4599:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":871,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":952,"src":"4627:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":870,"name":"address","nodeType":"ElementaryTypeName","src":"4627:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":873,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":952,"src":"4647:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":872,"name":"uint256","nodeType":"ElementaryTypeName","src":"4647:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4486:183:4"},"returnParameters":{"id":883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":880,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":952,"src":"4744:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":879,"name":"uint256","nodeType":"ElementaryTypeName","src":"4744:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":882,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":952,"src":"4761:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":881,"name":"uint256","nodeType":"ElementaryTypeName","src":"4761:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4743:34:4"},"scope":1946,"src":"4462:970:4","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[5384],"body":{"id":1014,"nodeType":"Block","src":"5748:389:4","statements":[{"expression":{"argumentTypes":null,"id":990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":975,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"5759:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":976,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"5772:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":977,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5758:24:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":979,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"5814:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":980,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"5833:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":981,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":956,"src":"5851:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":982,"name":"amountTokenMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":958,"src":"5874:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":983,"name":"amountAMBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":960,"src":"5902:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":986,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5936:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter01_$1946","typeString":"contract AstraRouter01"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter01_$1946","typeString":"contract AstraRouter01"}],"id":985,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5928:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":984,"name":"address","nodeType":"ElementaryTypeName","src":"5928:7:4","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5928:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":988,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"5955:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":978,"name":"removeLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"5785:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"}},"id":989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5785:188:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5758:215:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":991,"nodeType":"ExpressionStatement","src":"5758:215:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":995,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":954,"src":"6011:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":996,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"6018:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":997,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":971,"src":"6022:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":992,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"5983:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8391,"src":"5983:27:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5983:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":999,"nodeType":"ExpressionStatement","src":"5983:51:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1004,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"6065:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1001,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"6050:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1000,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"6044:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":1002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6044:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":1003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":5785,"src":"6044:20:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":1005,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6044:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1006,"nodeType":"ExpressionStatement","src":"6044:31:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1010,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"6116:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1011,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":973,"src":"6120:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1007,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"6085:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":1009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"6085:30:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6085:45:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1013,"nodeType":"ExpressionStatement","src":"6085:45:4"}]},"documentation":null,"functionSelector":"e77bdfc5","id":1015,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":968,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":964,"src":"5677:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":969,"modifierName":{"argumentTypes":null,"id":967,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"5670:6:4","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"5670:16:4"}],"name":"removeLiquidityAMB","nodeType":"FunctionDefinition","overrides":{"id":966,"nodeType":"OverrideSpecifier","overrides":[],"src":"5653:8:4"},"parameters":{"id":965,"nodeType":"ParameterList","parameters":[{"constant":false,"id":954,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":1015,"src":"5475:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":953,"name":"address","nodeType":"ElementaryTypeName","src":"5475:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":956,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":1015,"src":"5498:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":955,"name":"uint256","nodeType":"ElementaryTypeName","src":"5498:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":958,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":1015,"src":"5525:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":957,"name":"uint256","nodeType":"ElementaryTypeName","src":"5525:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":960,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":1015,"src":"5557:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":959,"name":"uint256","nodeType":"ElementaryTypeName","src":"5557:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":962,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":1015,"src":"5587:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":961,"name":"address","nodeType":"ElementaryTypeName","src":"5587:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":964,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":1015,"src":"5607:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":963,"name":"uint256","nodeType":"ElementaryTypeName","src":"5607:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5465:164:4"},"returnParameters":{"id":974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":971,"mutability":"mutable","name":"amountToken","nodeType":"VariableDeclaration","overrides":null,"scope":1015,"src":"5704:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":970,"name":"uint256","nodeType":"ElementaryTypeName","src":"5704:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":973,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":1015,"src":"5725:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":972,"name":"uint256","nodeType":"ElementaryTypeName","src":"5725:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5703:40:4"},"scope":1946,"src":"5438:699:4","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[5413],"body":{"id":1096,"nodeType":"Block","src":"6502:524:4","statements":[{"assignments":[1046],"declarations":[{"constant":false,"id":1046,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":1096,"src":"6512:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1045,"name":"address","nodeType":"ElementaryTypeName","src":"6512:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1053,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1049,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"6548:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1050,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"6557:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1051,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"6565:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1047,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"6527:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"6527:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":1052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6527:45:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6512:60:4"},{"assignments":[1055],"declarations":[{"constant":false,"id":1055,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":1096,"src":"6582:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1054,"name":"uint256","nodeType":"ElementaryTypeName","src":"6582:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":1064,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"id":1056,"name":"approveMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1031,"src":"6598:10:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":1062,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"6625:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6598:36:4","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1060,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"6619:2:4","subExpression":{"argumentTypes":null,"hexValue":"31","id":1059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6620:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":1058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6611:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1057,"name":"uint256","nodeType":"ElementaryTypeName","src":"6611:7:4","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":1061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6611:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6582:52:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1069,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6681:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6681:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1073,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6713:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter01_$1946","typeString":"contract AstraRouter01"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter01_$1946","typeString":"contract AstraRouter01"}],"id":1072,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6705:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1071,"name":"address","nodeType":"ElementaryTypeName","src":"6705:7:4","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":1074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6705:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":1075,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1055,"src":"6732:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1076,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"6751:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1077,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1033,"src":"6773:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":1078,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1035,"src":"6788:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":1079,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1037,"src":"6803:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1066,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1046,"src":"6655:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1065,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"6644:10:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":1067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6644:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":193,"src":"6644:23:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":1080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6644:170:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1081,"nodeType":"ExpressionStatement","src":"6644:170:4"},{"expression":{"argumentTypes":null,"id":1094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":1082,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1041,"src":"6825:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1083,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"6834:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1084,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6824:18:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1086,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"6874:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1087,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1019,"src":"6894:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1088,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1021,"src":"6914:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1089,"name":"amountAMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1023,"src":"6937:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1090,"name":"amountBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1025,"src":"6961:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1091,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1027,"src":"6985:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1092,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"7001:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1085,"name":"removeLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":952,"src":"6845:15:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"}},"id":1093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6845:174:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"6824:195:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1095,"nodeType":"ExpressionStatement","src":"6824:195:4"}]},"documentation":null,"functionSelector":"2195995c","id":1097,"implemented":true,"kind":"function","modifiers":[],"name":"removeLiquidityWithPermit","nodeType":"FunctionDefinition","overrides":{"id":1039,"nodeType":"OverrideSpecifier","overrides":[],"src":"6450:8:4"},"parameters":{"id":1038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1017,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6187:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1016,"name":"address","nodeType":"ElementaryTypeName","src":"6187:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1019,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6211:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1018,"name":"address","nodeType":"ElementaryTypeName","src":"6211:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1021,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6235:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1020,"name":"uint256","nodeType":"ElementaryTypeName","src":"6235:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1023,"mutability":"mutable","name":"amountAMin","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6262:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1022,"name":"uint256","nodeType":"ElementaryTypeName","src":"6262:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1025,"mutability":"mutable","name":"amountBMin","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6290:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1024,"name":"uint256","nodeType":"ElementaryTypeName","src":"6290:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1027,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6318:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1026,"name":"address","nodeType":"ElementaryTypeName","src":"6318:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1029,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6338:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1028,"name":"uint256","nodeType":"ElementaryTypeName","src":"6338:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1031,"mutability":"mutable","name":"approveMax","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6364:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1030,"name":"bool","nodeType":"ElementaryTypeName","src":"6364:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":1033,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6389:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1032,"name":"uint8","nodeType":"ElementaryTypeName","src":"6389:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":1035,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6406:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1034,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6406:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":1037,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6425:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1036,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6425:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"6177:263:4"},"returnParameters":{"id":1044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1041,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6468:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1040,"name":"uint256","nodeType":"ElementaryTypeName","src":"6468:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1043,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":1097,"src":"6485:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1042,"name":"uint256","nodeType":"ElementaryTypeName","src":"6485:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6467:34:4"},"scope":1946,"src":"6143:883:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5440],"body":{"id":1175,"nodeType":"Block","src":"7381:515:4","statements":[{"assignments":[1126],"declarations":[{"constant":false,"id":1126,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":1175,"src":"7391:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1125,"name":"address","nodeType":"ElementaryTypeName","src":"7391:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1133,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1129,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"7427:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1130,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1099,"src":"7436:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1131,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"7443:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1127,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"7406:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"7406:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":1132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7406:42:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7391:57:4"},{"assignments":[1135],"declarations":[{"constant":false,"id":1135,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":1175,"src":"7458:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1134,"name":"uint256","nodeType":"ElementaryTypeName","src":"7458:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":1144,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"id":1136,"name":"approveMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1111,"src":"7474:10:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":1142,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7501:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7474:36:4","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1140,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7495:2:4","subExpression":{"argumentTypes":null,"hexValue":"31","id":1139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7496:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":1138,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7487:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1137,"name":"uint256","nodeType":"ElementaryTypeName","src":"7487:7:4","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7487:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7458:52:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1149,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7557:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7557:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1153,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7589:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter01_$1946","typeString":"contract AstraRouter01"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter01_$1946","typeString":"contract AstraRouter01"}],"id":1152,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7581:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1151,"name":"address","nodeType":"ElementaryTypeName","src":"7581:7:4","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":1154,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7581:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":1155,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1135,"src":"7608:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1156,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1109,"src":"7627:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1157,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"7649:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":1158,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1115,"src":"7664:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":1159,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1117,"src":"7679:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1146,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"7531:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1145,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"7520:10:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":1147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7520:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":1148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":193,"src":"7520:23:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":1160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7520:170:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1161,"nodeType":"ExpressionStatement","src":"7520:170:4"},{"expression":{"argumentTypes":null,"id":1173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":1162,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1121,"src":"7701:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1163,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1123,"src":"7714:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1164,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7700:24:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1166,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1099,"src":"7759:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1167,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1101,"src":"7778:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1168,"name":"amountTokenMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1103,"src":"7801:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1169,"name":"amountAMBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1105,"src":"7829:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1170,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1107,"src":"7855:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1171,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1109,"src":"7871:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1165,"name":"removeLiquidityAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1015,"src":"7727:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"}},"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7727:162:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"7700:189:4","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1174,"nodeType":"ExpressionStatement","src":"7700:189:4"}]},"documentation":null,"functionSelector":"6eeccb89","id":1176,"implemented":true,"kind":"function","modifiers":[],"name":"removeLiquidityAMBWithPermit","nodeType":"FunctionDefinition","overrides":{"id":1119,"nodeType":"OverrideSpecifier","overrides":[],"src":"7323:8:4"},"parameters":{"id":1118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1099,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":1176,"src":"7079:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1098,"name":"address","nodeType":"ElementaryTypeName","src":"7079:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1101,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":1176,"src":"7102:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1100,"name":"uint256","nodeType":"ElementaryTypeName","src":"7102:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1103,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":1176,"src":"7129:22:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1102,"name":"uint256","nodeType":"ElementaryTypeName","src":"7129:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1105,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":1176,"src":"7161:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1104,"name":"uint256","nodeType":"ElementaryTypeName","src":"7161:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1107,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":1176,"src":"7191:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1106,"name":"address","nodeType":"ElementaryTypeName","src":"7191:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1109,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":1176,"src":"7211:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1108,"name":"uint256","nodeType":"ElementaryTypeName","src":"7211:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1111,"mutability":"mutable","name":"approveMax","nodeType":"VariableDeclaration","overrides":null,"scope":1176,"src":"7237:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1110,"name":"bool","nodeType":"ElementaryTypeName","src":"7237:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":1113,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","overrides":null,"scope":1176,"src":"7262:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1112,"name":"uint8","nodeType":"ElementaryTypeName","src":"7262:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":1115,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":1176,"src":"7279:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1114,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7279:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":1117,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","overrides":null,"scope":1176,"src":"7298:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1116,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7298:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"7069:244:4"},"returnParameters":{"id":1124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1121,"mutability":"mutable","name":"amountToken","nodeType":"VariableDeclaration","overrides":null,"scope":1176,"src":"7341:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1120,"name":"uint256","nodeType":"ElementaryTypeName","src":"7341:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1123,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":1176,"src":"7362:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1122,"name":"uint256","nodeType":"ElementaryTypeName","src":"7362:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7340:40:4"},"scope":1946,"src":"7032:864:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1291,"nodeType":"Block","src":"8118:687:4","statements":[{"body":{"id":1289,"nodeType":"Block","src":"8170:629:4","statements":[{"assignments":[1200,1202],"declarations":[{"constant":false,"id":1200,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","overrides":null,"scope":1289,"src":"8185:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1199,"name":"address","nodeType":"ElementaryTypeName","src":"8185:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1202,"mutability":"mutable","name":"output","nodeType":"VariableDeclaration","overrides":null,"scope":1289,"src":"8200:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1201,"name":"address","nodeType":"ElementaryTypeName","src":"8200:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1212,"initialValue":{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1203,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"8219:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1205,"indexExpression":{"argumentTypes":null,"id":1204,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1188,"src":"8224:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8219:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1206,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"8228:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1210,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1207,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1188,"src":"8233:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8237:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8233:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8228:11:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1211,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8218:22:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"8184:56:4"},{"assignments":[1214,null],"declarations":[{"constant":false,"id":1214,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","overrides":null,"scope":1289,"src":"8255:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1213,"name":"address","nodeType":"ElementaryTypeName","src":"8255:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},null],"id":1220,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1217,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1200,"src":"8299:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1218,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"8306:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1215,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"8275:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sortTokens","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"8275:23:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":1219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8275:38:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"8254:59:4"},{"assignments":[1222],"declarations":[{"constant":false,"id":1222,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":1289,"src":"8327:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1221,"name":"uint256","nodeType":"ElementaryTypeName","src":"8327:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":1228,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1223,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1179,"src":"8347:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1227,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1224,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1188,"src":"8355:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8359:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8355:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8347:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8327:34:4"},{"assignments":[1230,1232],"declarations":[{"constant":false,"id":1230,"mutability":"mutable","name":"amount0Out","nodeType":"VariableDeclaration","overrides":null,"scope":1289,"src":"8376:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1229,"name":"uint256","nodeType":"ElementaryTypeName","src":"8376:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1232,"mutability":"mutable","name":"amount1Out","nodeType":"VariableDeclaration","overrides":null,"scope":1289,"src":"8396:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1231,"name":"uint256","nodeType":"ElementaryTypeName","src":"8396:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":1249,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1233,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1200,"src":"8418:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":1234,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1214,"src":"8427:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8418:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":1242,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"8495:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":1245,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8514:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1244,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8506:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"8506:7:4","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":1246,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8506:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1247,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8494:23:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":1248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8418:99:4","trueExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":1238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8461:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1237,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8453:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1236,"name":"uint256","nodeType":"ElementaryTypeName","src":"8453:7:4","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":1239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8453:10:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1240,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"8465:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1241,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8452:23:4","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"8375:142:4"},{"assignments":[1251],"declarations":[{"constant":false,"id":1251,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":1289,"src":"8531:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1250,"name":"address","nodeType":"ElementaryTypeName","src":"8531:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":1270,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1257,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1252,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1188,"src":"8544:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1253,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"8548:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8548:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"32","id":1255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8562:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"8548:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8544:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":1268,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1184,"src":"8651:3:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8544:110:4","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1260,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"8603:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1261,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"8612:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1262,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"8620:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1266,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1263,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1188,"src":"8625:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"32","id":1264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8629:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"8625:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8620:11:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1258,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"8582:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"8582:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":1267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8582:50:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"8531:123:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1280,"name":"amount0Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1230,"src":"8747:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1281,"name":"amount1Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1232,"src":"8759:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1282,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1251,"src":"8771:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":1285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8785:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"8775:9:4","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1283,"name":"bytes","nodeType":"ElementaryTypeName","src":"8779:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1286,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8775:12:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1274,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"8700:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1275,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1200,"src":"8709:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1276,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1202,"src":"8716:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1272,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"8679:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1273,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"8679:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":1277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8679:44:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1271,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"8668:10:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":1278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8668:56:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":1279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":302,"src":"8668:78:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,uint256,address,bytes memory) external"}},"id":1287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8668:120:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1288,"nodeType":"ExpressionStatement","src":"8668:120:4"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1190,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1188,"src":"8144:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1191,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1182,"src":"8148:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":1192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"8148:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8162:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8148:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8144:19:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1290,"initializationExpression":{"assignments":[1188],"declarations":[{"constant":false,"id":1188,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","overrides":null,"scope":1290,"src":"8133:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1187,"name":"uint256","nodeType":"ElementaryTypeName","src":"8133:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":1189,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"8133:9:4"},"loopExpression":{"expression":{"argumentTypes":null,"id":1197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8165:3:4","subExpression":{"argumentTypes":null,"id":1196,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1188,"src":"8165:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1198,"nodeType":"ExpressionStatement","src":"8165:3:4"},"nodeType":"ForStatement","src":"8128:671:4"}]},"documentation":null,"id":1292,"implemented":true,"kind":"function","modifiers":[],"name":"_swap","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":1185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1179,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":1292,"src":"8027:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1177,"name":"uint256","nodeType":"ElementaryTypeName","src":"8027:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1178,"length":null,"nodeType":"ArrayTypeName","src":"8027:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":1182,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":1292,"src":"8061:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1180,"name":"address","nodeType":"ElementaryTypeName","src":"8061:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1181,"length":null,"nodeType":"ArrayTypeName","src":"8061:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":1184,"mutability":"mutable","name":"_to","nodeType":"VariableDeclaration","overrides":null,"scope":1292,"src":"8092:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1183,"name":"address","nodeType":"ElementaryTypeName","src":"8092:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"8017:92:4"},"returnParameters":{"id":1186,"nodeType":"ParameterList","parameters":[],"src":"8118:0:4"},"scope":1946,"src":"8003:802:4","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"baseFunctions":[5457],"body":{"id":1363,"nodeType":"Block","src":"9056:432:4","statements":[{"expression":{"argumentTypes":null,"id":1320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1313,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"9066:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1316,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"9103:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1317,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"9112:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1318,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9122:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"argumentTypes":null,"id":1314,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"9076:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsOut","nodeType":"MemberAccess","referencedDeclaration":6238,"src":"9076:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9076:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"9066:61:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1321,"nodeType":"ExpressionStatement","src":"9066:61:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1323,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"9158:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1328,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1324,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"9166:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9166:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9183:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9166:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9158:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":1329,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1296,"src":"9189:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9158:43:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54","id":1331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9215:41:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""}],"id":1322,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9137:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9137:129:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1333,"nodeType":"ExpressionStatement","src":"9137:129:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1337,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9321:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1339,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9326:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9321:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1340,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9342:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9342:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1344,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"9387:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1345,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9396:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1347,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9401:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9396:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1348,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9405:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1350,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":1349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9410:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9405:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1342,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"9366:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"9366:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":1351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9366:47:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1352,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"9427:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1354,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9435:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9427:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1334,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"9276:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":1336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"9276:31:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":1355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9276:171:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1356,"nodeType":"ExpressionStatement","src":"9276:171:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1358,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"9463:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":1359,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1299,"src":"9472:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":1360,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1301,"src":"9478:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1357,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"9457:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,address)"}},"id":1361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9457:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1362,"nodeType":"ExpressionStatement","src":"9457:24:4"}]},"documentation":null,"functionSelector":"38ed1739","id":1364,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":1307,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"9011:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1308,"modifierName":{"argumentTypes":null,"id":1306,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"9004:6:4","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"9004:16:4"}],"name":"swapExactTokensForTokens","nodeType":"FunctionDefinition","overrides":{"id":1305,"nodeType":"OverrideSpecifier","overrides":[],"src":"8995:8:4"},"parameters":{"id":1304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1294,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":1364,"src":"8854:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1293,"name":"uint256","nodeType":"ElementaryTypeName","src":"8854:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1296,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":1364,"src":"8880:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1295,"name":"uint256","nodeType":"ElementaryTypeName","src":"8880:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1299,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":1364,"src":"8910:23:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1297,"name":"address","nodeType":"ElementaryTypeName","src":"8910:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1298,"length":null,"nodeType":"ArrayTypeName","src":"8910:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":1301,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":1364,"src":"8943:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1300,"name":"address","nodeType":"ElementaryTypeName","src":"8943:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1303,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":1364,"src":"8963:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1302,"name":"uint256","nodeType":"ElementaryTypeName","src":"8963:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8844:141:4"},"returnParameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1311,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":1364,"src":"9030:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1309,"name":"uint256","nodeType":"ElementaryTypeName","src":"9030:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1310,"length":null,"nodeType":"ArrayTypeName","src":"9030:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"9029:26:4"},"scope":1946,"src":"8811:677:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5474],"body":{"id":1432,"nodeType":"Block","src":"9739:410:4","statements":[{"expression":{"argumentTypes":null,"id":1392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1385,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"9749:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1388,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"9785:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1389,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1366,"src":"9794:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1390,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"9805:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"argumentTypes":null,"id":1386,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"9759:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsIn","nodeType":"MemberAccess","referencedDeclaration":6323,"src":"9759:25:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":1391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9759:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"9749:61:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1393,"nodeType":"ExpressionStatement","src":"9749:61:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1395,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"9841:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1397,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1396,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9849:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9841:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":1398,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1368,"src":"9855:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9841:25:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a204558434553534956455f494e5055545f414d4f554e54","id":1400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9880:37:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9c3fa372d5166c099d57201e1902047f94c00ffabf14faec2d8fa47afb0e04d0","typeString":"literal_string \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\""},"value":"AstraRouter: EXCESSIVE_INPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9c3fa372d5166c099d57201e1902047f94c00ffabf14faec2d8fa47afb0e04d0","typeString":"literal_string \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\""}],"id":1394,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9820:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9820:107:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1402,"nodeType":"ExpressionStatement","src":"9820:107:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1406,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"9982:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1408,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1407,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9987:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9982:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1409,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10003:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10003:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1413,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"10048:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1414,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"10057:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1416,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10062:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10057:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1417,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"10066:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1419,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":1418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10071:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10066:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1411,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"10027:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"10027:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":1420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10027:47:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1421,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"10088:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1423,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10096:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10088:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1403,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"9937:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":1405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"9937:31:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":1424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9937:171:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1425,"nodeType":"ExpressionStatement","src":"9937:171:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1427,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"10124:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":1428,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1371,"src":"10133:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":1429,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1373,"src":"10139:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1426,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"10118:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,address)"}},"id":1430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10118:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1431,"nodeType":"ExpressionStatement","src":"10118:24:4"}]},"documentation":null,"functionSelector":"8803dbee","id":1433,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":1379,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1375,"src":"9694:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1380,"modifierName":{"argumentTypes":null,"id":1378,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"9687:6:4","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"9687:16:4"}],"name":"swapTokensForExactTokens","nodeType":"FunctionDefinition","overrides":{"id":1377,"nodeType":"OverrideSpecifier","overrides":[],"src":"9678:8:4"},"parameters":{"id":1376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1366,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":1433,"src":"9537:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1365,"name":"uint256","nodeType":"ElementaryTypeName","src":"9537:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1368,"mutability":"mutable","name":"amountInMax","nodeType":"VariableDeclaration","overrides":null,"scope":1433,"src":"9564:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1367,"name":"uint256","nodeType":"ElementaryTypeName","src":"9564:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1371,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":1433,"src":"9593:23:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1369,"name":"address","nodeType":"ElementaryTypeName","src":"9593:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1370,"length":null,"nodeType":"ArrayTypeName","src":"9593:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":1373,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":1433,"src":"9626:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1372,"name":"address","nodeType":"ElementaryTypeName","src":"9626:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1375,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":1433,"src":"9646:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1374,"name":"uint256","nodeType":"ElementaryTypeName","src":"9646:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9527:141:4"},"returnParameters":{"id":1384,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1383,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":1433,"src":"9713:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1381,"name":"uint256","nodeType":"ElementaryTypeName","src":"9713:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1382,"length":null,"nodeType":"ArrayTypeName","src":"9713:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"9712:26:4"},"scope":1946,"src":"9494:655:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5489],"body":{"id":1520,"nodeType":"Block","src":"10423:532:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1453,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"10441:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1455,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1454,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10446:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10441:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":1456,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"10452:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10441:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e56414c49445f50415448","id":1458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10458:27:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""},"value":"AstraRouter: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""}],"id":1452,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10433:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10433:53:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1460,"nodeType":"ExpressionStatement","src":"10433:53:4"},{"expression":{"argumentTypes":null,"id":1469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1461,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"10496:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1464,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"10533:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1465,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10542:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10542:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1467,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"10553:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"argumentTypes":null,"id":1462,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"10506:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsOut","nodeType":"MemberAccess","referencedDeclaration":6238,"src":"10506:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":1468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10506:52:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"10496:62:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1470,"nodeType":"ExpressionStatement","src":"10496:62:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1472,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"10589:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1477,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1476,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1473,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"10597:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10597:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10614:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10597:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10589:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":1478,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1435,"src":"10620:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10589:43:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54","id":1480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10646:41:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""}],"id":1471,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"10568:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10568:129:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1482,"nodeType":"ExpressionStatement","src":"10568:129:4"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1484,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"10713:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1483,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"10707:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":1485,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10707:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":1486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":5771,"src":"10707:19:4","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":1490,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1487,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"10734:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1489,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10742:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10734:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"10707:38:4","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":1491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10707:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1492,"nodeType":"ExpressionStatement","src":"10707:40:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1500,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"10836:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1501,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"10845:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1503,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10850:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10845:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1504,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"10854:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1506,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":1505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10859:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10854:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1498,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"10815:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"10815:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":1507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10815:47:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1508,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"10880:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1510,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10888:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10880:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1495,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"10783:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1494,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"10777:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":1496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10777:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":1497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"10777:20:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10777:127:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1493,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"10757:6:4","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10757:157:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1513,"nodeType":"ExpressionStatement","src":"10757:157:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1515,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1450,"src":"10930:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":1516,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1438,"src":"10939:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":1517,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1440,"src":"10945:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1514,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"10924:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,address)"}},"id":1518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10924:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1519,"nodeType":"ExpressionStatement","src":"10924:24:4"}]},"documentation":null,"functionSelector":"ac8ee3b6","id":1521,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":1446,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1442,"src":"10366:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1447,"modifierName":{"argumentTypes":null,"id":1445,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"10359:6:4","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"10359:16:4"}],"name":"swapExactAMBForTokens","nodeType":"FunctionDefinition","overrides":{"id":1444,"nodeType":"OverrideSpecifier","overrides":[],"src":"10342:8:4"},"parameters":{"id":1443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1435,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":1521,"src":"10195:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1434,"name":"uint256","nodeType":"ElementaryTypeName","src":"10195:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1438,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":1521,"src":"10225:23:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1436,"name":"address","nodeType":"ElementaryTypeName","src":"10225:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1437,"length":null,"nodeType":"ArrayTypeName","src":"10225:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":1440,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":1521,"src":"10258:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1439,"name":"address","nodeType":"ElementaryTypeName","src":"10258:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1442,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":1521,"src":"10278:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1441,"name":"uint256","nodeType":"ElementaryTypeName","src":"10278:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"10185:115:4"},"returnParameters":{"id":1451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1450,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":1521,"src":"10393:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1448,"name":"uint256","nodeType":"ElementaryTypeName","src":"10393:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1449,"length":null,"nodeType":"ArrayTypeName","src":"10393:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"10392:26:4"},"scope":1946,"src":"10155:800:4","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[5506],"body":{"id":1628,"nodeType":"Block","src":"11203:630:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1543,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"11221:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1548,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1544,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"11226:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11226:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11240:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11226:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11221:21:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":1549,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"11246:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11221:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e56414c49445f50415448","id":1551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11252:27:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""},"value":"AstraRouter: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""}],"id":1542,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11213:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11213:67:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1553,"nodeType":"ExpressionStatement","src":"11213:67:4"},{"expression":{"argumentTypes":null,"id":1561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1554,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"11290:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1557,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"11326:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1558,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1523,"src":"11335:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1559,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"11346:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"argumentTypes":null,"id":1555,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"11300:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsIn","nodeType":"MemberAccess","referencedDeclaration":6323,"src":"11300:25:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":1560,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11300:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"11290:61:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1562,"nodeType":"ExpressionStatement","src":"11290:61:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1564,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"11382:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1566,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11390:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11382:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":1567,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1525,"src":"11396:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11382:25:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a204558434553534956455f494e5055545f414d4f554e54","id":1569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11421:37:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9c3fa372d5166c099d57201e1902047f94c00ffabf14faec2d8fa47afb0e04d0","typeString":"literal_string \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\""},"value":"AstraRouter: EXCESSIVE_INPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9c3fa372d5166c099d57201e1902047f94c00ffabf14faec2d8fa47afb0e04d0","typeString":"literal_string \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\""}],"id":1563,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11361:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11361:107:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1571,"nodeType":"ExpressionStatement","src":"11361:107:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1575,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"11523:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1577,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11528:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11523:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1578,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11544:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11544:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1582,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"11589:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1583,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"11598:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1585,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11603:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11598:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1586,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"11607:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1588,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":1587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11612:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11607:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1580,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"11568:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"11568:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11568:47:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1590,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"11629:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1592,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11637:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11629:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1572,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"11478:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":1574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"11478:31:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":1593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11478:171:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1594,"nodeType":"ExpressionStatement","src":"11478:171:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1596,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"11665:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":1597,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"11674:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1600,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11688:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter01_$1946","typeString":"contract AstraRouter01"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter01_$1946","typeString":"contract AstraRouter01"}],"id":1599,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11680:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1598,"name":"address","nodeType":"ElementaryTypeName","src":"11680:7:4","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":1601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11680:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":1595,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"11659:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,address)"}},"id":1602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11659:35:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1603,"nodeType":"ExpressionStatement","src":"11659:35:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1608,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"11725:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1613,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1609,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"11733:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11733:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1611,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11750:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11733:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11725:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1605,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"11710:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1604,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"11704:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":1606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11704:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":1607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":5785,"src":"11704:20:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":1614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11704:49:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1615,"nodeType":"ExpressionStatement","src":"11704:49:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1619,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"11794:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1620,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"11798:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1625,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1621,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1540,"src":"11806:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11806:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11823:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11806:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11798:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1616,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"11763:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":1618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"11763:30:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11763:63:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1627,"nodeType":"ExpressionStatement","src":"11763:63:4"}]},"documentation":null,"functionSelector":"40d2463f","id":1629,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":1536,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1532,"src":"11158:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1537,"modifierName":{"argumentTypes":null,"id":1535,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"11151:6:4","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"11151:16:4"}],"name":"swapTokensForExactAMB","nodeType":"FunctionDefinition","overrides":{"id":1534,"nodeType":"OverrideSpecifier","overrides":[],"src":"11142:8:4"},"parameters":{"id":1533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1523,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":1629,"src":"11001:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1522,"name":"uint256","nodeType":"ElementaryTypeName","src":"11001:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1525,"mutability":"mutable","name":"amountInMax","nodeType":"VariableDeclaration","overrides":null,"scope":1629,"src":"11028:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1524,"name":"uint256","nodeType":"ElementaryTypeName","src":"11028:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1528,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":1629,"src":"11057:23:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1526,"name":"address","nodeType":"ElementaryTypeName","src":"11057:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1527,"length":null,"nodeType":"ArrayTypeName","src":"11057:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":1530,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":1629,"src":"11090:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1529,"name":"address","nodeType":"ElementaryTypeName","src":"11090:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1532,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":1629,"src":"11110:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1531,"name":"uint256","nodeType":"ElementaryTypeName","src":"11110:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"10991:141:4"},"returnParameters":{"id":1541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1540,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":1629,"src":"11177:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1538,"name":"uint256","nodeType":"ElementaryTypeName","src":"11177:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1539,"length":null,"nodeType":"ArrayTypeName","src":"11177:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"11176:26:4"},"scope":1946,"src":"10961:872:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5523],"body":{"id":1739,"nodeType":"Block","src":"12081:652:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1651,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"12099:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1656,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1652,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"12104:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12104:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12118:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12104:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12099:21:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":1657,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12124:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12099:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e56414c49445f50415448","id":1659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12130:27:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""},"value":"AstraRouter: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""}],"id":1650,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12091:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12091:67:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1661,"nodeType":"ExpressionStatement","src":"12091:67:4"},{"expression":{"argumentTypes":null,"id":1669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1662,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"12168:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1665,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"12205:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1666,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1631,"src":"12214:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1667,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"12224:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"argumentTypes":null,"id":1663,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"12178:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsOut","nodeType":"MemberAccess","referencedDeclaration":6238,"src":"12178:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":1668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12178:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"12168:61:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1670,"nodeType":"ExpressionStatement","src":"12168:61:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1672,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"12260:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1677,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1673,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"12268:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12268:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12285:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12268:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12260:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":1678,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1633,"src":"12291:12:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12260:43:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54","id":1680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12317:41:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""}],"id":1671,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12239:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12239:129:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1682,"nodeType":"ExpressionStatement","src":"12239:129:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1686,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"12423:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1688,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12428:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12423:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1689,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12444:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12444:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1693,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"12489:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1694,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"12498:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1696,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12503:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12498:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1697,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"12507:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1699,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":1698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12512:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12507:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1691,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"12468:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"12468:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":1700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12468:47:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1701,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"12529:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1703,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1702,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12537:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12529:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1683,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"12378:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":1685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"12378:31:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":1704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12378:171:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1705,"nodeType":"ExpressionStatement","src":"12378:171:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1707,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"12565:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":1708,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"12574:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1711,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12588:4:4","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter01_$1946","typeString":"contract AstraRouter01"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter01_$1946","typeString":"contract AstraRouter01"}],"id":1710,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12580:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1709,"name":"address","nodeType":"ElementaryTypeName","src":"12580:7:4","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":1712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12580:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":1706,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"12559:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,address)"}},"id":1713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12559:35:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1714,"nodeType":"ExpressionStatement","src":"12559:35:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1719,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"12625:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1724,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1720,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"12633:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12633:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12650:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12633:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12625:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1716,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"12610:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1715,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"12604:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":1717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12604:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":5785,"src":"12604:20:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":1725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12604:49:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1726,"nodeType":"ExpressionStatement","src":"12604:49:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1730,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1638,"src":"12694:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1731,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"12698:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1736,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1732,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1648,"src":"12706:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12706:14:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":1734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12723:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12706:18:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12698:27:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1727,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"12663:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":1729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"12663:30:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12663:63:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1738,"nodeType":"ExpressionStatement","src":"12663:63:4"}]},"documentation":null,"functionSelector":"e5dee373","id":1740,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":1644,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1640,"src":"12036:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1645,"modifierName":{"argumentTypes":null,"id":1643,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"12029:6:4","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"12029:16:4"}],"name":"swapExactTokensForAMB","nodeType":"FunctionDefinition","overrides":{"id":1642,"nodeType":"OverrideSpecifier","overrides":[],"src":"12020:8:4"},"parameters":{"id":1641,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1631,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":1740,"src":"11879:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1630,"name":"uint256","nodeType":"ElementaryTypeName","src":"11879:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1633,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":1740,"src":"11905:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1632,"name":"uint256","nodeType":"ElementaryTypeName","src":"11905:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1636,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":1740,"src":"11935:23:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1634,"name":"address","nodeType":"ElementaryTypeName","src":"11935:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1635,"length":null,"nodeType":"ArrayTypeName","src":"11935:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":1638,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":1740,"src":"11968:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1637,"name":"address","nodeType":"ElementaryTypeName","src":"11968:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1640,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":1740,"src":"11988:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1639,"name":"uint256","nodeType":"ElementaryTypeName","src":"11988:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"11869:141:4"},"returnParameters":{"id":1649,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1648,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":1740,"src":"12055:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1646,"name":"uint256","nodeType":"ElementaryTypeName","src":"12055:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1647,"length":null,"nodeType":"ArrayTypeName","src":"12055:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"12054:26:4"},"scope":1946,"src":"11839:894:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[5538],"body":{"id":1844,"nodeType":"Block","src":"13004:650:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1760,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"13022:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1762,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13027:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13022:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":1763,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"13033:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13022:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e56414c49445f50415448","id":1765,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13039:27:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""},"value":"AstraRouter: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""}],"id":1759,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13014:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13014:53:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1767,"nodeType":"ExpressionStatement","src":"13014:53:4"},{"expression":{"argumentTypes":null,"id":1775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1768,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1757,"src":"13077:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1771,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"13113:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1772,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1742,"src":"13122:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1773,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"13133:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"argumentTypes":null,"id":1769,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"13087:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsIn","nodeType":"MemberAccess","referencedDeclaration":6323,"src":"13087:25:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13087:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"13077:61:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1776,"nodeType":"ExpressionStatement","src":"13077:61:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1778,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1757,"src":"13169:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1780,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13177:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13169:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1781,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13183:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13183:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13169:23:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a204558434553534956455f494e5055545f414d4f554e54","id":1784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13206:37:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9c3fa372d5166c099d57201e1902047f94c00ffabf14faec2d8fa47afb0e04d0","typeString":"literal_string \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\""},"value":"AstraRouter: EXCESSIVE_INPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9c3fa372d5166c099d57201e1902047f94c00ffabf14faec2d8fa47afb0e04d0","typeString":"literal_string \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\""}],"id":1777,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13148:7:4","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13148:105:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1786,"nodeType":"ExpressionStatement","src":"13148:105:4"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1788,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"13269:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1787,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"13263:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":1789,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13263:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":1790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":5771,"src":"13263:19:4","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":1794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1791,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1757,"src":"13290:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1793,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13298:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13290:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"13263:38:4","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":1795,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13263:40:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1796,"nodeType":"ExpressionStatement","src":"13263:40:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1804,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"13392:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1805,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"13401:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1807,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13406:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13401:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1808,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"13410:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":1810,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":1809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13415:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13410:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":1802,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"13371:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"13371:20:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":1811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13371:47:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1812,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1757,"src":"13436:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1814,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13444:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13436:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1799,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"13339:4:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1798,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"13333:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":1800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13333:11:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":1801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"13333:20:4","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":1815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13333:127:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1797,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"13313:6:4","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13313:157:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1817,"nodeType":"ExpressionStatement","src":"13313:157:4"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1819,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1757,"src":"13486:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":1820,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"13495:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":1821,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"13501:2:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1818,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1292,"src":"13480:5:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,address)"}},"id":1822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13480:24:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1823,"nodeType":"ExpressionStatement","src":"13480:24:4"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1824,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13518:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13518:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1826,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1757,"src":"13530:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1828,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1827,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13538:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13530:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13518:22:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":1843,"nodeType":"IfStatement","src":"13514:106:4","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1833,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13585:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13585:10:4","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1835,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13597:3:4","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13597:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":1837,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1757,"src":"13609:7:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":1839,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":1838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13617:1:4","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13609:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13597:22:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1830,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"13554:14:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":1832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"13554:30:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13554:66:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1842,"nodeType":"ExpressionStatement","src":"13554:66:4"}}]},"documentation":null,"functionSelector":"ef0dc4be","id":1845,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":1753,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"12947:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1754,"modifierName":{"argumentTypes":null,"id":1752,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":518,"src":"12940:6:4","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"12940:16:4"}],"name":"swapAMBForExactTokens","nodeType":"FunctionDefinition","overrides":{"id":1751,"nodeType":"OverrideSpecifier","overrides":[],"src":"12923:8:4"},"parameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1742,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":1845,"src":"12779:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1741,"name":"uint256","nodeType":"ElementaryTypeName","src":"12779:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1745,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":1845,"src":"12806:23:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1743,"name":"address","nodeType":"ElementaryTypeName","src":"12806:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1744,"length":null,"nodeType":"ArrayTypeName","src":"12806:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":1747,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":1845,"src":"12839:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1746,"name":"address","nodeType":"ElementaryTypeName","src":"12839:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1749,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":1845,"src":"12859:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1748,"name":"uint256","nodeType":"ElementaryTypeName","src":"12859:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"12769:112:4"},"returnParameters":{"id":1758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1757,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":1845,"src":"12974:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1755,"name":"uint256","nodeType":"ElementaryTypeName","src":"12974:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1756,"length":null,"nodeType":"ArrayTypeName","src":"12974:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"12973:26:4"},"scope":1946,"src":"12739:915:4","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[5549],"body":{"id":1864,"nodeType":"Block","src":"13805:71:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1859,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1847,"src":"13841:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1860,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1849,"src":"13850:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1861,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1851,"src":"13860:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1857,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"13822:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":6037,"src":"13822:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13822:47:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1856,"id":1863,"nodeType":"Return","src":"13815:54:4"}]},"documentation":null,"functionSelector":"ad615dec","id":1865,"implemented":true,"kind":"function","modifiers":[],"name":"quote","nodeType":"FunctionDefinition","overrides":{"id":1853,"nodeType":"OverrideSpecifier","overrides":[],"src":"13770:8:4"},"parameters":{"id":1852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1847,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":1865,"src":"13684:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1846,"name":"uint256","nodeType":"ElementaryTypeName","src":"13684:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1849,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","overrides":null,"scope":1865,"src":"13709:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1848,"name":"uint256","nodeType":"ElementaryTypeName","src":"13709:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1851,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","overrides":null,"scope":1865,"src":"13735:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1850,"name":"uint256","nodeType":"ElementaryTypeName","src":"13735:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13674:83:4"},"returnParameters":{"id":1856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1855,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":1865,"src":"13788:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1854,"name":"uint256","nodeType":"ElementaryTypeName","src":"13788:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13787:17:4"},"scope":1946,"src":"13660:216:4","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[5560],"body":{"id":1884,"nodeType":"Block","src":"14040:82:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1879,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1867,"src":"14083:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1880,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1869,"src":"14093:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1881,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1871,"src":"14104:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1877,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"14057:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountOut","nodeType":"MemberAccess","referencedDeclaration":6097,"src":"14057:25:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14057:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1876,"id":1883,"nodeType":"Return","src":"14050:65:4"}]},"documentation":null,"functionSelector":"054d50d4","id":1885,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountOut","nodeType":"FunctionDefinition","overrides":{"id":1873,"nodeType":"OverrideSpecifier","overrides":[],"src":"14003:8:4"},"parameters":{"id":1872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1867,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":1885,"src":"13913:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1866,"name":"uint256","nodeType":"ElementaryTypeName","src":"13913:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1869,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","overrides":null,"scope":1885,"src":"13939:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1868,"name":"uint256","nodeType":"ElementaryTypeName","src":"13939:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1871,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","overrides":null,"scope":1885,"src":"13966:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1870,"name":"uint256","nodeType":"ElementaryTypeName","src":"13966:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13903:87:4"},"returnParameters":{"id":1876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1875,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":1885,"src":"14021:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1874,"name":"uint256","nodeType":"ElementaryTypeName","src":"14021:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14020:19:4"},"scope":1946,"src":"13882:240:4","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[5571],"body":{"id":1904,"nodeType":"Block","src":"14285:83:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1899,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1887,"src":"14328:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1900,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1889,"src":"14339:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1901,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1891,"src":"14350:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":1897,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"14302:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountOut","nodeType":"MemberAccess","referencedDeclaration":6097,"src":"14302:25:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":1902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14302:59:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1896,"id":1903,"nodeType":"Return","src":"14295:66:4"}]},"documentation":null,"functionSelector":"85f8c259","id":1905,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountIn","nodeType":"FunctionDefinition","overrides":{"id":1893,"nodeType":"OverrideSpecifier","overrides":[],"src":"14249:8:4"},"parameters":{"id":1892,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1887,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":1905,"src":"14158:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1886,"name":"uint256","nodeType":"ElementaryTypeName","src":"14158:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1889,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","overrides":null,"scope":1905,"src":"14185:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1888,"name":"uint256","nodeType":"ElementaryTypeName","src":"14185:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1891,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","overrides":null,"scope":1905,"src":"14212:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1890,"name":"uint256","nodeType":"ElementaryTypeName","src":"14212:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14148:88:4"},"returnParameters":{"id":1896,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1895,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":1905,"src":"14267:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1894,"name":"uint256","nodeType":"ElementaryTypeName","src":"14267:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14266:18:4"},"scope":1946,"src":"14128:240:4","stateMutability":"pure","virtual":false,"visibility":"public"},{"baseFunctions":[5582],"body":{"id":1924,"nodeType":"Block","src":"14530:75:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1919,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"14574:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1920,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1907,"src":"14583:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1921,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1910,"src":"14593:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"expression":{"argumentTypes":null,"id":1917,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"14547:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsOut","nodeType":"MemberAccess","referencedDeclaration":6238,"src":"14547:26:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":1922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14547:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":1916,"id":1923,"nodeType":"Return","src":"14540:58:4"}]},"documentation":null,"functionSelector":"d06ca61f","id":1925,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsOut","nodeType":"FunctionDefinition","overrides":{"id":1912,"nodeType":"OverrideSpecifier","overrides":[],"src":"14474:8:4"},"parameters":{"id":1911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":1925,"src":"14397:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1906,"name":"uint256","nodeType":"ElementaryTypeName","src":"14397:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1910,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":1925,"src":"14415:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1908,"name":"address","nodeType":"ElementaryTypeName","src":"14415:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1909,"length":null,"nodeType":"ArrayTypeName","src":"14415:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"14396:41:4"},"returnParameters":{"id":1916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1915,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":1925,"src":"14500:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1913,"name":"uint256","nodeType":"ElementaryTypeName","src":"14500:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1914,"length":null,"nodeType":"ArrayTypeName","src":"14500:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"14499:26:4"},"scope":1946,"src":"14374:231:4","stateMutability":"view","virtual":false,"visibility":"public"},{"baseFunctions":[5593],"body":{"id":1944,"nodeType":"Block","src":"14767:75:4","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":1939,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"14810:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":1940,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1927,"src":"14819:9:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":1941,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1930,"src":"14830:4:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"expression":{"argumentTypes":null,"id":1937,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"14784:12:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsIn","nodeType":"MemberAccess","referencedDeclaration":6323,"src":"14784:25:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":1942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14784:51:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":1936,"id":1943,"nodeType":"Return","src":"14777:58:4"}]},"documentation":null,"functionSelector":"1f00ca74","id":1945,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsIn","nodeType":"FunctionDefinition","overrides":{"id":1932,"nodeType":"OverrideSpecifier","overrides":[],"src":"14711:8:4"},"parameters":{"id":1931,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1927,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":1945,"src":"14633:17:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1926,"name":"uint256","nodeType":"ElementaryTypeName","src":"14633:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":1930,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":1945,"src":"14652:21:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":1928,"name":"address","nodeType":"ElementaryTypeName","src":"14652:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1929,"length":null,"nodeType":"ArrayTypeName","src":"14652:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"14632:42:4"},"returnParameters":{"id":1936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1935,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":1945,"src":"14737:24:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1933,"name":"uint256","nodeType":"ElementaryTypeName","src":"14737:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1934,"length":null,"nodeType":"ArrayTypeName","src":"14737:9:4","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"14736:26:4"},"scope":1946,"src":"14611:231:4","stateMutability":"view","virtual":false,"visibility":"public"}],"scope":1947,"src":"263:14581:4"}],"src":"0:14845:4"},"id":4},"contracts/periphery/AstraRouter02.sol":{"ast":{"absolutePath":"contracts/periphery/AstraRouter02.sol","exportedSymbols":{"AstraRouter02":[3984]},"id":3985,"nodeType":"SourceUnit","nodes":[{"id":1948,"literals":["solidity","=","0.6",".6"],"nodeType":"PragmaDirective","src":"0:23:5"},{"absolutePath":"contracts/core/interfaces/IAstraFactory.sol","file":"../core/interfaces/IAstraFactory.sol","id":1949,"nodeType":"ImportDirective","scope":3985,"sourceUnit":77,"src":"25:46:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/TransferHelper.sol","file":"./libraries/TransferHelper.sol","id":1950,"nodeType":"ImportDirective","scope":3985,"sourceUnit":8464,"src":"72:40:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/IAstraRouter02.sol","file":"./interfaces/IAstraRouter02.sol","id":1951,"nodeType":"ImportDirective","scope":3985,"sourceUnit":5683,"src":"114:41:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/AstraLibrary.sol","file":"./libraries/AstraLibrary.sol","id":1952,"nodeType":"ImportDirective","scope":3985,"sourceUnit":6325,"src":"156:38:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/SafeMath.sol","file":"./libraries/SafeMath.sol","id":1953,"nodeType":"ImportDirective","scope":3985,"sourceUnit":8304,"src":"195:34:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/IERC20.sol","file":"./interfaces/IERC20.sol","id":1954,"nodeType":"ImportDirective","scope":3985,"sourceUnit":5767,"src":"230:33:5","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/ISAMB.sol","file":"./interfaces/ISAMB.sol","id":1955,"nodeType":"ImportDirective","scope":3985,"sourceUnit":5787,"src":"264:32:5","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":1956,"name":"IAstraRouter02","nodeType":"UserDefinedTypeName","referencedDeclaration":5682,"src":"324:14:5","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter02_$5682","typeString":"contract IAstraRouter02"}},"id":1957,"nodeType":"InheritanceSpecifier","src":"324:14:5"}],"contractDependencies":[5594,5682],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":3984,"linearizedBaseContracts":[3984,5682,5594],"name":"AstraRouter02","nodeType":"ContractDefinition","nodes":[{"id":1960,"libraryName":{"contractScope":null,"id":1958,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":8303,"src":"351:8:5","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$8303","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"345:27:5","typeName":{"id":1959,"name":"uint256","nodeType":"ElementaryTypeName","src":"364:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"baseFunctions":[5293],"constant":false,"functionSelector":"c45a0155","id":1963,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","overrides":{"id":1962,"nodeType":"OverrideSpecifier","overrides":[],"src":"392:8:5"},"scope":3984,"src":"377:31:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1961,"name":"address","nodeType":"ElementaryTypeName","src":"377:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"baseFunctions":[5298],"constant":false,"functionSelector":"90793ea8","id":1966,"mutability":"mutable","name":"SAMB","nodeType":"VariableDeclaration","overrides":{"id":1965,"nodeType":"OverrideSpecifier","overrides":[],"src":"429:8:5"},"scope":3984,"src":"414:28:5","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1964,"name":"address","nodeType":"ElementaryTypeName","src":"414:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"body":{"id":1979,"nodeType":"Block","src":"483:88:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":1971,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1968,"src":"501:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":1972,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"513:5:5","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"513:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"501:27:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a2045585049524544","id":1975,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"530:22:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9a382d0105f64091ebabcac330882446698182189bd311d1ad5fbf603a47621d","typeString":"literal_string \"AstraRouter: EXPIRED\""},"value":"AstraRouter: EXPIRED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9a382d0105f64091ebabcac330882446698182189bd311d1ad5fbf603a47621d","typeString":"literal_string \"AstraRouter: EXPIRED\""}],"id":1970,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"493:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"493:60:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1977,"nodeType":"ExpressionStatement","src":"493:60:5"},{"id":1978,"nodeType":"PlaceholderStatement","src":"563:1:5"}]},"documentation":null,"id":1980,"name":"ensure","nodeType":"ModifierDefinition","overrides":null,"parameters":{"id":1969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1968,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":1980,"src":"465:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1967,"name":"uint256","nodeType":"ElementaryTypeName","src":"465:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"464:18:5"},"src":"449:122:5","virtual":false,"visibility":"internal"},{"body":{"id":1995,"nodeType":"Block","src":"637:57:5","statements":[{"expression":{"argumentTypes":null,"id":1989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1987,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"647:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1988,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1982,"src":"657:8:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"647:18:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1990,"nodeType":"ExpressionStatement","src":"647:18:5"},{"expression":{"argumentTypes":null,"id":1993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":1991,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"675:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":1992,"name":"_SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1984,"src":"682:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"675:12:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1994,"nodeType":"ExpressionStatement","src":"675:12:5"}]},"documentation":null,"id":1996,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":1985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1982,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","overrides":null,"scope":1996,"src":"589:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1981,"name":"address","nodeType":"ElementaryTypeName","src":"589:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":1984,"mutability":"mutable","name":"_SAMB","nodeType":"VariableDeclaration","overrides":null,"scope":1996,"src":"607:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1983,"name":"address","nodeType":"ElementaryTypeName","src":"607:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"588:33:5"},"returnParameters":{"id":1986,"nodeType":"ParameterList","parameters":[],"src":"637:0:5"},"scope":3984,"src":"577:117:5","stateMutability":"payable","virtual":false,"visibility":"public"},{"body":{"id":2006,"nodeType":"Block","src":"727:98:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2000,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"744:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"744:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":2002,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"758:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"744:18:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1999,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"737:6:5","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"737:26:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2005,"nodeType":"ExpressionStatement","src":"737:26:5"}]},"documentation":null,"id":2007,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":1997,"nodeType":"ParameterList","parameters":[],"src":"707:2:5"},"returnParameters":{"id":1998,"nodeType":"ParameterList","parameters":[],"src":"727:0:5"},"scope":3984,"src":"700:125:5","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":2137,"nodeType":"Block","src":"1119:1410:5","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2030,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2009,"src":"1215:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2031,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2011,"src":"1223:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2027,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"1198:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2026,"name":"IAstraFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"1184:13:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraFactory_$76_$","typeString":"type(contract IAstraFactory)"}},"id":2028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1184:22:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraFactory_$76","typeString":"contract IAstraFactory"}},"id":2029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getPair","nodeType":"MemberAccess","referencedDeclaration":44,"src":"1184:30:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address) view external returns (address)"}},"id":2032,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1184:46:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1242:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2034,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1234:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2033,"name":"address","nodeType":"ElementaryTypeName","src":"1234:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1234:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"1184:60:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2047,"nodeType":"IfStatement","src":"1180:140:5","trueBody":{"id":2046,"nodeType":"Block","src":"1246:74:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2042,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2009,"src":"1294:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2043,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2011,"src":"1302:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2039,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"1274:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2038,"name":"IAstraFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"1260:13:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraFactory_$76_$","typeString":"type(contract IAstraFactory)"}},"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1260:22:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraFactory_$76","typeString":"contract IAstraFactory"}},"id":2041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"createPair","nodeType":"MemberAccess","referencedDeclaration":65,"src":"1260:33:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address) external returns (address)"}},"id":2044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1260:49:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2045,"nodeType":"ExpressionStatement","src":"1260:49:5"}]}},{"assignments":[2049,2051],"declarations":[{"constant":false,"id":2049,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","overrides":null,"scope":2137,"src":"1330:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2048,"name":"uint256","nodeType":"ElementaryTypeName","src":"1330:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2051,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","overrides":null,"scope":2137,"src":"1348:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2050,"name":"uint256","nodeType":"ElementaryTypeName","src":"1348:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2058,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2054,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"1406:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2055,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2009,"src":"1427:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2056,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2011,"src":"1447:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2052,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"1368:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":5998,"src":"1368:24:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address) view returns (uint256,uint256)"}},"id":2057,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1368:95:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1329:134:5"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2065,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2059,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"1477:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":2060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1489:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1477:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2064,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2062,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"1494:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":2063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1506:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1494:13:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1477:30:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2135,"nodeType":"Block","src":"1593:930:5","statements":[{"assignments":[2076],"declarations":[{"constant":false,"id":2076,"mutability":"mutable","name":"amountBOptimal","nodeType":"VariableDeclaration","overrides":null,"scope":2135,"src":"1607:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2075,"name":"uint256","nodeType":"ElementaryTypeName","src":"1607:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2083,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2079,"name":"amountADesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2013,"src":"1668:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2080,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"1700:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2081,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"1726:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2077,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"1632:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":6037,"src":"1632:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1632:116:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1607:141:5"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2084,"name":"amountBOptimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"1766:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":2085,"name":"amountBDesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"1784:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1766:32:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2133,"nodeType":"Block","src":"2043:470:5","statements":[{"assignments":[2104],"declarations":[{"constant":false,"id":2104,"mutability":"mutable","name":"amountAOptimal","nodeType":"VariableDeclaration","overrides":null,"scope":2133,"src":"2061:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2103,"name":"uint256","nodeType":"ElementaryTypeName","src":"2061:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2111,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2107,"name":"amountBDesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"2126:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2108,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2051,"src":"2162:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2109,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2049,"src":"2192:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2105,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"2086:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":6037,"src":"2086:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2086:132:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2061:157:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2113,"name":"amountAOptimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2104,"src":"2243:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":2114,"name":"amountADesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2013,"src":"2261:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2243:32:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2112,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2236:6:5","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2236:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2117,"nodeType":"ExpressionStatement","src":"2236:40:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2119,"name":"amountAOptimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2104,"src":"2323:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":2120,"name":"amountAMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2017,"src":"2341:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2323:28:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f415f414d4f554e54","id":2122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2373:36:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_2ce73a9732a49f98004004ddf06ca36be05456dc81445fabb043ca53be44fc43","typeString":"literal_string \"AstraRouter: INSUFFICIENT_A_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_A_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ce73a9732a49f98004004ddf06ca36be05456dc81445fabb043ca53be44fc43","typeString":"literal_string \"AstraRouter: INSUFFICIENT_A_AMOUNT\""}],"id":2118,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2294:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2294:133:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2124,"nodeType":"ExpressionStatement","src":"2294:133:5"},{"expression":{"argumentTypes":null,"id":2131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2125,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"2446:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2126,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2024,"src":"2455:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2127,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2445:18:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2128,"name":"amountAOptimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2104,"src":"2467:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2129,"name":"amountBDesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"2483:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2130,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2466:32:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"2445:53:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2132,"nodeType":"ExpressionStatement","src":"2445:53:5"}]},"id":2134,"nodeType":"IfStatement","src":"1762:751:5","trueBody":{"id":2102,"nodeType":"Block","src":"1800:237:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2088,"name":"amountBOptimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"1847:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":2089,"name":"amountBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2019,"src":"1865:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1847:28:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f425f414d4f554e54","id":2091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1897:36:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_22ae76e92a0ba4a6b6ad73338d6c1fe0638411be34a5dc0f6b0e006c8ab4c3fa","typeString":"literal_string \"AstraRouter: INSUFFICIENT_B_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_B_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_22ae76e92a0ba4a6b6ad73338d6c1fe0638411be34a5dc0f6b0e006c8ab4c3fa","typeString":"literal_string \"AstraRouter: INSUFFICIENT_B_AMOUNT\""}],"id":2087,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1818:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1818:133:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2093,"nodeType":"ExpressionStatement","src":"1818:133:5"},{"expression":{"argumentTypes":null,"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2094,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"1970:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2095,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2024,"src":"1979:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2096,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1969:18:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2097,"name":"amountADesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2013,"src":"1991:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2098,"name":"amountBOptimal","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2076,"src":"2007:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2099,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1990:32:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"1969:53:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2101,"nodeType":"ExpressionStatement","src":"1969:53:5"}]}}]},"id":2136,"nodeType":"IfStatement","src":"1473:1050:5","trueBody":{"id":2074,"nodeType":"Block","src":"1509:78:5","statements":[{"expression":{"argumentTypes":null,"id":2072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2066,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2022,"src":"1524:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2067,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2024,"src":"1533:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2068,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1523:18:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2069,"name":"amountADesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2013,"src":"1545:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2070,"name":"amountBDesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2015,"src":"1561:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2071,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1544:32:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"1523:53:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2073,"nodeType":"ExpressionStatement","src":"1523:53:5"}]}}]},"documentation":null,"id":2138,"implemented":true,"kind":"function","modifiers":[],"name":"_addLiquidity","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":2020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2009,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":2138,"src":"894:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2008,"name":"address","nodeType":"ElementaryTypeName","src":"894:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2011,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":2138,"src":"918:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2010,"name":"address","nodeType":"ElementaryTypeName","src":"918:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2013,"mutability":"mutable","name":"amountADesired","nodeType":"VariableDeclaration","overrides":null,"scope":2138,"src":"942:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2012,"name":"uint256","nodeType":"ElementaryTypeName","src":"942:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2015,"mutability":"mutable","name":"amountBDesired","nodeType":"VariableDeclaration","overrides":null,"scope":2138,"src":"974:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2014,"name":"uint256","nodeType":"ElementaryTypeName","src":"974:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2017,"mutability":"mutable","name":"amountAMin","nodeType":"VariableDeclaration","overrides":null,"scope":2138,"src":"1006:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2016,"name":"uint256","nodeType":"ElementaryTypeName","src":"1006:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2019,"mutability":"mutable","name":"amountBMin","nodeType":"VariableDeclaration","overrides":null,"scope":2138,"src":"1034:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2018,"name":"uint256","nodeType":"ElementaryTypeName","src":"1034:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"884:174:5"},"returnParameters":{"id":2025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2022,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":2138,"src":"1085:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2021,"name":"uint256","nodeType":"ElementaryTypeName","src":"1085:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2024,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":2138,"src":"1102:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2023,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1084:34:5"},"scope":3984,"src":"862:1667:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[5323],"body":{"id":2218,"nodeType":"Block","src":"2972:474:5","statements":[{"expression":{"argumentTypes":null,"id":2178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2167,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2161,"src":"2983:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2168,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2163,"src":"2992:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2169,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"2982:18:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2171,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2140,"src":"3030:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2172,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2142,"src":"3050:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2173,"name":"amountADesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2144,"src":"3070:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2174,"name":"amountBDesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2146,"src":"3098:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2175,"name":"amountAMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2148,"src":"3126:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2176,"name":"amountBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2150,"src":"3150:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2170,"name":"_addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"3003:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"}},"id":2177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3003:167:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"2982:188:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2179,"nodeType":"ExpressionStatement","src":"2982:188:5"},{"assignments":[2181],"declarations":[{"constant":false,"id":2181,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":2218,"src":"3180:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2180,"name":"address","nodeType":"ElementaryTypeName","src":"3180:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":2188,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2184,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"3216:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2185,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2140,"src":"3225:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2186,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2142,"src":"3233:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2182,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"3195:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"3195:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":2187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3195:45:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3180:60:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2192,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2140,"src":"3282:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2193,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3290:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2194,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3290:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":2195,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"3302:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2196,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2161,"src":"3308:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2189,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"3250:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"3250:31:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3250:66:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2198,"nodeType":"ExpressionStatement","src":"3250:66:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2202,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2142,"src":"3358:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2203,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3366:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2204,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3366:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":2205,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"3378:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2206,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2163,"src":"3384:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2199,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"3326:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":2201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"3326:31:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":2207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3326:66:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2208,"nodeType":"ExpressionStatement","src":"3326:66:5"},{"expression":{"argumentTypes":null,"id":2216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2209,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2165,"src":"3402:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2214,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2152,"src":"3436:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2211,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2181,"src":"3425:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2210,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"3414:10:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3414:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":2213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":282,"src":"3414:21:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":2215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3414:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3402:37:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2217,"nodeType":"ExpressionStatement","src":"3402:37:5"}]},"documentation":null,"functionSelector":"e8e33700","id":2219,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":2158,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2154,"src":"2842:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2159,"modifierName":{"argumentTypes":null,"id":2157,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"2835:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"2835:16:5"}],"name":"addLiquidity","nodeType":"FunctionDefinition","overrides":{"id":2156,"nodeType":"OverrideSpecifier","overrides":[],"src":"2818:8:5"},"parameters":{"id":2155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2140,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":2219,"src":"2566:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2139,"name":"address","nodeType":"ElementaryTypeName","src":"2566:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2142,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":2219,"src":"2590:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2141,"name":"address","nodeType":"ElementaryTypeName","src":"2590:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2144,"mutability":"mutable","name":"amountADesired","nodeType":"VariableDeclaration","overrides":null,"scope":2219,"src":"2614:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2143,"name":"uint256","nodeType":"ElementaryTypeName","src":"2614:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2146,"mutability":"mutable","name":"amountBDesired","nodeType":"VariableDeclaration","overrides":null,"scope":2219,"src":"2646:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2145,"name":"uint256","nodeType":"ElementaryTypeName","src":"2646:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2148,"mutability":"mutable","name":"amountAMin","nodeType":"VariableDeclaration","overrides":null,"scope":2219,"src":"2678:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2147,"name":"uint256","nodeType":"ElementaryTypeName","src":"2678:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2150,"mutability":"mutable","name":"amountBMin","nodeType":"VariableDeclaration","overrides":null,"scope":2219,"src":"2706:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2149,"name":"uint256","nodeType":"ElementaryTypeName","src":"2706:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2152,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":2219,"src":"2734:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2151,"name":"address","nodeType":"ElementaryTypeName","src":"2734:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2154,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":2219,"src":"2754:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2153,"name":"uint256","nodeType":"ElementaryTypeName","src":"2754:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2556:220:5"},"returnParameters":{"id":2166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2161,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":2219,"src":"2882:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2160,"name":"uint256","nodeType":"ElementaryTypeName","src":"2882:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2163,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":2219,"src":"2911:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2162,"name":"uint256","nodeType":"ElementaryTypeName","src":"2911:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2165,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":2219,"src":"2940:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2164,"name":"uint256","nodeType":"ElementaryTypeName","src":"2940:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2868:99:5"},"scope":3984,"src":"2535:911:5","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[5344],"body":{"id":2320,"nodeType":"Block","src":"3867:659:5","statements":[{"expression":{"argumentTypes":null,"id":2256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2244,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2238,"src":"3878:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2245,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2240,"src":"3891:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2246,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"3877:24:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2248,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2221,"src":"3931:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2249,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"3950:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2250,"name":"amountTokenDesired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2223,"src":"3968:18:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2251,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4000:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4000:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2253,"name":"amountTokenMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2225,"src":"4023:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2254,"name":"amountAMBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2227,"src":"4051:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2247,"name":"_addLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2138,"src":"3904:13:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,uint256,uint256,uint256) returns (uint256,uint256)"}},"id":2255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3904:169:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"3877:196:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2257,"nodeType":"ExpressionStatement","src":"3877:196:5"},{"assignments":[2259],"declarations":[{"constant":false,"id":2259,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":2320,"src":"4083:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2258,"name":"address","nodeType":"ElementaryTypeName","src":"4083:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":2266,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2262,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"4119:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2263,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2221,"src":"4128:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2264,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"4135:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2260,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"4098:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2261,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"4098:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":2265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4098:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4083:57:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2270,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2221,"src":"4182:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2271,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4189:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4189:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":2273,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2259,"src":"4201:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2274,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2238,"src":"4207:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2267,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"4150:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"4150:31:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4150:69:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2276,"nodeType":"ExpressionStatement","src":"4150:69:5"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2278,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"4235:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2277,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"4229:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":2279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4229:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":2280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":5771,"src":"4229:19:5","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":2282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"argumentTypes":null,"id":2281,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2240,"src":"4256:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4229:37:5","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4229:39:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2284,"nodeType":"ExpressionStatement","src":"4229:39:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2290,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2259,"src":"4306:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2291,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2240,"src":"4312:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2287,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"4291:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2286,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"4285:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":2288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4285:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":2289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"4285:20:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":2292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4285:37:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2285,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"4278:6:5","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4278:45:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2294,"nodeType":"ExpressionStatement","src":"4278:45:5"},{"expression":{"argumentTypes":null,"id":2302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2295,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2242,"src":"4333:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2300,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2229,"src":"4367:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2297,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2259,"src":"4356:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2296,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"4345:10:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":2298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4345:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":282,"src":"4345:21:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) external returns (uint256)"}},"id":2301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4345:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4333:37:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2303,"nodeType":"ExpressionStatement","src":"4333:37:5"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2307,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2304,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4419:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4419:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":2306,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2240,"src":"4431:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4419:21:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":2319,"nodeType":"IfStatement","src":"4415:104:5","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2311,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4485:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4485:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2313,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4497:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4497:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":2315,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2240,"src":"4509:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4497:21:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2308,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"4454:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"4454:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4454:65:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2318,"nodeType":"ExpressionStatement","src":"4454:65:5"}}]},"documentation":null,"functionSelector":"84b0b3a2","id":2321,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":2235,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2231,"src":"3731:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2236,"modifierName":{"argumentTypes":null,"id":2234,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"3724:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"3724:16:5"}],"name":"addLiquidityAMB","nodeType":"FunctionDefinition","overrides":{"id":2233,"nodeType":"OverrideSpecifier","overrides":[],"src":"3707:8:5"},"parameters":{"id":2232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2221,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":2321,"src":"3486:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2220,"name":"address","nodeType":"ElementaryTypeName","src":"3486:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2223,"mutability":"mutable","name":"amountTokenDesired","nodeType":"VariableDeclaration","overrides":null,"scope":2321,"src":"3509:26:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2222,"name":"uint256","nodeType":"ElementaryTypeName","src":"3509:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2225,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":2321,"src":"3545:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2224,"name":"uint256","nodeType":"ElementaryTypeName","src":"3545:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2227,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":2321,"src":"3577:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2226,"name":"uint256","nodeType":"ElementaryTypeName","src":"3577:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2229,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":2321,"src":"3607:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2228,"name":"address","nodeType":"ElementaryTypeName","src":"3607:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2231,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":2321,"src":"3627:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2230,"name":"uint256","nodeType":"ElementaryTypeName","src":"3627:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3476:173:5"},"returnParameters":{"id":2243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2238,"mutability":"mutable","name":"amountToken","nodeType":"VariableDeclaration","overrides":null,"scope":2321,"src":"3771:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2237,"name":"uint256","nodeType":"ElementaryTypeName","src":"3771:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2240,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":2321,"src":"3804:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2239,"name":"uint256","nodeType":"ElementaryTypeName","src":"3804:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2242,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":2321,"src":"3835:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2241,"name":"uint256","nodeType":"ElementaryTypeName","src":"3835:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3757:105:5"},"scope":3984,"src":"3452:1074:5","stateMutability":"payable","virtual":true,"visibility":"external"},{"baseFunctions":[5365],"body":{"id":2413,"nodeType":"Block","src":"4902:650:5","statements":[{"assignments":[2347],"declarations":[{"constant":false,"id":2347,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":2413,"src":"4912:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2346,"name":"address","nodeType":"ElementaryTypeName","src":"4912:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":2354,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2350,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"4948:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2351,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2323,"src":"4957:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2352,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2325,"src":"4965:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2348,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"4927:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2349,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"4927:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":2353,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4927:45:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4912:60:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2359,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5012:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5012:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":2361,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"5024:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2362,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2327,"src":"5030:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2356,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"4993:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2355,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"4982:10:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":2357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4982:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":2358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":159,"src":"4982:29:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":2363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4982:58:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2364,"nodeType":"ExpressionStatement","src":"4982:58:5"},{"assignments":[2366,2368],"declarations":[{"constant":false,"id":2366,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","overrides":null,"scope":2413,"src":"5077:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2365,"name":"uint256","nodeType":"ElementaryTypeName","src":"5077:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2368,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","overrides":null,"scope":2413,"src":"5094:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2367,"name":"uint256","nodeType":"ElementaryTypeName","src":"5094:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2375,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2373,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2333,"src":"5135:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2370,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2347,"src":"5124:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2369,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"5113:10:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":2371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5113:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":291,"src":"5113:21:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address) external returns (uint256,uint256)"}},"id":2374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5113:25:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5076:62:5"},{"assignments":[2377,null],"declarations":[{"constant":false,"id":2377,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","overrides":null,"scope":2413,"src":"5149:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2376,"name":"address","nodeType":"ElementaryTypeName","src":"5149:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},null],"id":2383,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2380,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2323,"src":"5193:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2381,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2325,"src":"5201:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2378,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"5169:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sortTokens","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"5169:23:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":2382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5169:39:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"5148:60:5"},{"expression":{"argumentTypes":null,"id":2397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2384,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"5219:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2385,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2344,"src":"5228:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2386,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5218:18:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2387,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2323,"src":"5239:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":2388,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2377,"src":"5249:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5239:16:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2393,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2368,"src":"5304:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2394,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2366,"src":"5313:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2395,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5303:18:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":2396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5239:82:5","trueExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2390,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2366,"src":"5271:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2391,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2368,"src":"5280:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2392,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5270:18:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5218:103:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2398,"nodeType":"ExpressionStatement","src":"5218:103:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2400,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2342,"src":"5352:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":2401,"name":"amountAMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2329,"src":"5363:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5352:21:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f415f414d4f554e54","id":2403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5387:36:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_2ce73a9732a49f98004004ddf06ca36be05456dc81445fabb043ca53be44fc43","typeString":"literal_string \"AstraRouter: INSUFFICIENT_A_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_A_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ce73a9732a49f98004004ddf06ca36be05456dc81445fabb043ca53be44fc43","typeString":"literal_string \"AstraRouter: INSUFFICIENT_A_AMOUNT\""}],"id":2399,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5331:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5331:102:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2405,"nodeType":"ExpressionStatement","src":"5331:102:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2407,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2344,"src":"5464:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":2408,"name":"amountBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2331,"src":"5475:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5464:21:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f425f414d4f554e54","id":2410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5499:36:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_22ae76e92a0ba4a6b6ad73338d6c1fe0638411be34a5dc0f6b0e006c8ab4c3fa","typeString":"literal_string \"AstraRouter: INSUFFICIENT_B_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_B_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_22ae76e92a0ba4a6b6ad73338d6c1fe0638411be34a5dc0f6b0e006c8ab4c3fa","typeString":"literal_string \"AstraRouter: INSUFFICIENT_B_AMOUNT\""}],"id":2406,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5443:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5443:102:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2412,"nodeType":"ExpressionStatement","src":"5443:102:5"}]},"documentation":null,"functionSelector":"baa2abde","id":2414,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":2339,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2335,"src":"4837:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2340,"modifierName":{"argumentTypes":null,"id":2338,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"4830:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"4830:16:5"}],"name":"removeLiquidity","nodeType":"FunctionDefinition","overrides":{"id":2337,"nodeType":"OverrideSpecifier","overrides":[],"src":"4813:8:5"},"parameters":{"id":2336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2323,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":2414,"src":"4600:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2322,"name":"address","nodeType":"ElementaryTypeName","src":"4600:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2325,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":2414,"src":"4624:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2324,"name":"address","nodeType":"ElementaryTypeName","src":"4624:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2327,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":2414,"src":"4648:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2326,"name":"uint256","nodeType":"ElementaryTypeName","src":"4648:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2329,"mutability":"mutable","name":"amountAMin","nodeType":"VariableDeclaration","overrides":null,"scope":2414,"src":"4675:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2328,"name":"uint256","nodeType":"ElementaryTypeName","src":"4675:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2331,"mutability":"mutable","name":"amountBMin","nodeType":"VariableDeclaration","overrides":null,"scope":2414,"src":"4703:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2330,"name":"uint256","nodeType":"ElementaryTypeName","src":"4703:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2333,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":2414,"src":"4731:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2332,"name":"address","nodeType":"ElementaryTypeName","src":"4731:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2335,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":2414,"src":"4751:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2334,"name":"uint256","nodeType":"ElementaryTypeName","src":"4751:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4590:183:5"},"returnParameters":{"id":2345,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2342,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":2414,"src":"4864:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2341,"name":"uint256","nodeType":"ElementaryTypeName","src":"4864:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2344,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":2414,"src":"4881:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2343,"name":"uint256","nodeType":"ElementaryTypeName","src":"4881:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4863:34:5"},"scope":3984,"src":"4566:986:5","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[5384],"body":{"id":2476,"nodeType":"Block","src":"5884:389:5","statements":[{"expression":{"argumentTypes":null,"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2437,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"5895:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2438,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2435,"src":"5908:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2439,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"5894:24:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2441,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2416,"src":"5950:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2442,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"5969:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2443,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2418,"src":"5987:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2444,"name":"amountTokenMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2420,"src":"6010:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2445,"name":"amountAMBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2422,"src":"6038:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2448,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6072:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}],"id":2447,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6064:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2446,"name":"address","nodeType":"ElementaryTypeName","src":"6064:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6064:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":2450,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"6091:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2440,"name":"removeLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"5921:15:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"}},"id":2451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5921:188:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"5894:215:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2453,"nodeType":"ExpressionStatement","src":"5894:215:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2457,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2416,"src":"6147:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2458,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2424,"src":"6154:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2459,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2433,"src":"6158:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2454,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"6119:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":2456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8391,"src":"6119:27:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6119:51:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2461,"nodeType":"ExpressionStatement","src":"6119:51:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2466,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2435,"src":"6201:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2463,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"6186:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2462,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"6180:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6180:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":2465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":5785,"src":"6180:20:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":2467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6180:31:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2468,"nodeType":"ExpressionStatement","src":"6180:31:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2472,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2424,"src":"6252:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2473,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2435,"src":"6256:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2469,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"6221:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":2471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"6221:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6221:45:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2475,"nodeType":"ExpressionStatement","src":"6221:45:5"}]},"documentation":null,"functionSelector":"e77bdfc5","id":2477,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":2430,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2426,"src":"5813:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2431,"modifierName":{"argumentTypes":null,"id":2429,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"5806:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"5806:16:5"}],"name":"removeLiquidityAMB","nodeType":"FunctionDefinition","overrides":{"id":2428,"nodeType":"OverrideSpecifier","overrides":[],"src":"5789:8:5"},"parameters":{"id":2427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2416,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":2477,"src":"5595:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2415,"name":"address","nodeType":"ElementaryTypeName","src":"5595:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2418,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":2477,"src":"5618:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2417,"name":"uint256","nodeType":"ElementaryTypeName","src":"5618:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2420,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":2477,"src":"5645:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2419,"name":"uint256","nodeType":"ElementaryTypeName","src":"5645:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2422,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":2477,"src":"5677:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2421,"name":"uint256","nodeType":"ElementaryTypeName","src":"5677:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2424,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":2477,"src":"5707:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2423,"name":"address","nodeType":"ElementaryTypeName","src":"5707:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2426,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":2477,"src":"5727:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2425,"name":"uint256","nodeType":"ElementaryTypeName","src":"5727:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5585:164:5"},"returnParameters":{"id":2436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2433,"mutability":"mutable","name":"amountToken","nodeType":"VariableDeclaration","overrides":null,"scope":2477,"src":"5840:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2432,"name":"uint256","nodeType":"ElementaryTypeName","src":"5840:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2435,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":2477,"src":"5861:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2434,"name":"uint256","nodeType":"ElementaryTypeName","src":"5861:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5839:40:5"},"scope":3984,"src":"5558:715:5","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[5413],"body":{"id":2558,"nodeType":"Block","src":"6646:524:5","statements":[{"assignments":[2508],"declarations":[{"constant":false,"id":2508,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":2558,"src":"6656:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2507,"name":"address","nodeType":"ElementaryTypeName","src":"6656:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":2515,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2511,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"6692:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2512,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2479,"src":"6701:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2513,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"6709:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2509,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"6671:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"6671:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":2514,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6671:45:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6656:60:5"},{"assignments":[2517],"declarations":[{"constant":false,"id":2517,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":2558,"src":"6726:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2516,"name":"uint256","nodeType":"ElementaryTypeName","src":"6726:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2526,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"id":2518,"name":"approveMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2493,"src":"6742:10:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":2524,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"6769:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"6742:36:5","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2522,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"6763:2:5","subExpression":{"argumentTypes":null,"hexValue":"31","id":2521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6764:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":2520,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6755:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2519,"name":"uint256","nodeType":"ElementaryTypeName","src":"6755:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6755:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6726:52:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2531,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6825:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"6825:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2535,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6857:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}],"id":2534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6849:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2533,"name":"address","nodeType":"ElementaryTypeName","src":"6849:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2536,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6849:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":2537,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2517,"src":"6876:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2538,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2491,"src":"6895:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2539,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2495,"src":"6917:1:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":2540,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2497,"src":"6932:1:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2541,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2499,"src":"6947:1:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2528,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2508,"src":"6799:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2527,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"6788:10:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":2529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6788:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":2530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":193,"src":"6788:23:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":2542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6788:170:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2543,"nodeType":"ExpressionStatement","src":"6788:170:5"},{"expression":{"argumentTypes":null,"id":2556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2544,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2503,"src":"6969:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2545,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2505,"src":"6978:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2546,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"6968:18:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2548,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2479,"src":"7018:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2549,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"7038:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2550,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"7058:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2551,"name":"amountAMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2485,"src":"7081:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2552,"name":"amountBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2487,"src":"7105:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2553,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2489,"src":"7129:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2554,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2491,"src":"7145:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2547,"name":"removeLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"6989:15:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"}},"id":2555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6989:174:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"6968:195:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2557,"nodeType":"ExpressionStatement","src":"6968:195:5"}]},"documentation":null,"functionSelector":"2195995c","id":2559,"implemented":true,"kind":"function","modifiers":[],"name":"removeLiquidityWithPermit","nodeType":"FunctionDefinition","overrides":{"id":2501,"nodeType":"OverrideSpecifier","overrides":[],"src":"6594:8:5"},"parameters":{"id":2500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2479,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6323:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2478,"name":"address","nodeType":"ElementaryTypeName","src":"6323:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2481,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6347:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2480,"name":"address","nodeType":"ElementaryTypeName","src":"6347:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2483,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6371:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2482,"name":"uint256","nodeType":"ElementaryTypeName","src":"6371:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2485,"mutability":"mutable","name":"amountAMin","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6398:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2484,"name":"uint256","nodeType":"ElementaryTypeName","src":"6398:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2487,"mutability":"mutable","name":"amountBMin","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6426:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2486,"name":"uint256","nodeType":"ElementaryTypeName","src":"6426:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2489,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6454:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2488,"name":"address","nodeType":"ElementaryTypeName","src":"6454:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2491,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6474:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2490,"name":"uint256","nodeType":"ElementaryTypeName","src":"6474:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2493,"mutability":"mutable","name":"approveMax","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6500:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2492,"name":"bool","nodeType":"ElementaryTypeName","src":"6500:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":2495,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6525:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2494,"name":"uint8","nodeType":"ElementaryTypeName","src":"6525:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":2497,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6542:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2496,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6542:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":2499,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6561:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2498,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6561:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"6313:263:5"},"returnParameters":{"id":2506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2503,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6612:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2502,"name":"uint256","nodeType":"ElementaryTypeName","src":"6612:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2505,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":2559,"src":"6629:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2504,"name":"uint256","nodeType":"ElementaryTypeName","src":"6629:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"6611:34:5"},"scope":3984,"src":"6279:891:5","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[5440],"body":{"id":2637,"nodeType":"Block","src":"7569:515:5","statements":[{"assignments":[2588],"declarations":[{"constant":false,"id":2588,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":2637,"src":"7579:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2587,"name":"address","nodeType":"ElementaryTypeName","src":"7579:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":2595,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2591,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"7615:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2592,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"7624:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2593,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"7631:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2589,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"7594:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"7594:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":2594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7594:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7579:57:5"},{"assignments":[2597],"declarations":[{"constant":false,"id":2597,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":2637,"src":"7646:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2596,"name":"uint256","nodeType":"ElementaryTypeName","src":"7646:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2606,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"id":2598,"name":"approveMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2573,"src":"7662:10:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":2604,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"7689:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7662:36:5","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7683:2:5","subExpression":{"argumentTypes":null,"hexValue":"31","id":2601,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7684:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":2600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7675:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2599,"name":"uint256","nodeType":"ElementaryTypeName","src":"7675:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7675:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7646:52:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2611,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7745:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"7745:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2615,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7777:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}],"id":2614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7769:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2613,"name":"address","nodeType":"ElementaryTypeName","src":"7769:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7769:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":2617,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2597,"src":"7796:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2618,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"7815:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2619,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2575,"src":"7837:1:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":2620,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2577,"src":"7852:1:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2621,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2579,"src":"7867:1:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2608,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2588,"src":"7719:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2607,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"7708:10:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7708:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":2610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":193,"src":"7708:23:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":2622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7708:170:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2623,"nodeType":"ExpressionStatement","src":"7708:170:5"},{"expression":{"argumentTypes":null,"id":2635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2624,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2583,"src":"7889:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2625,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"7902:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2626,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"7888:24:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2628,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2561,"src":"7947:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2629,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2563,"src":"7966:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2630,"name":"amountTokenMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2565,"src":"7989:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2631,"name":"amountAMBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2567,"src":"8017:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2632,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2569,"src":"8043:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2633,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2571,"src":"8059:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2627,"name":"removeLiquidityAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2477,"src":"7915:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"}},"id":2634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7915:162:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"7888:189:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2636,"nodeType":"ExpressionStatement","src":"7888:189:5"}]},"documentation":null,"functionSelector":"6eeccb89","id":2638,"implemented":true,"kind":"function","modifiers":[],"name":"removeLiquidityAMBWithPermit","nodeType":"FunctionDefinition","overrides":{"id":2581,"nodeType":"OverrideSpecifier","overrides":[],"src":"7499:8:5"},"parameters":{"id":2580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2561,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":2638,"src":"7223:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2560,"name":"address","nodeType":"ElementaryTypeName","src":"7223:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2563,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":2638,"src":"7246:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2562,"name":"uint256","nodeType":"ElementaryTypeName","src":"7246:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2565,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":2638,"src":"7273:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2564,"name":"uint256","nodeType":"ElementaryTypeName","src":"7273:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2567,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":2638,"src":"7305:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2566,"name":"uint256","nodeType":"ElementaryTypeName","src":"7305:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2569,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":2638,"src":"7335:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2568,"name":"address","nodeType":"ElementaryTypeName","src":"7335:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2571,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":2638,"src":"7355:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2570,"name":"uint256","nodeType":"ElementaryTypeName","src":"7355:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2573,"mutability":"mutable","name":"approveMax","nodeType":"VariableDeclaration","overrides":null,"scope":2638,"src":"7381:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2572,"name":"bool","nodeType":"ElementaryTypeName","src":"7381:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":2575,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","overrides":null,"scope":2638,"src":"7406:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2574,"name":"uint8","nodeType":"ElementaryTypeName","src":"7406:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":2577,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":2638,"src":"7423:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2576,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7423:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":2579,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","overrides":null,"scope":2638,"src":"7442:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2578,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7442:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"7213:244:5"},"returnParameters":{"id":2586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2583,"mutability":"mutable","name":"amountToken","nodeType":"VariableDeclaration","overrides":null,"scope":2638,"src":"7525:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2582,"name":"uint256","nodeType":"ElementaryTypeName","src":"7525:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2585,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":2638,"src":"7546:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2584,"name":"uint256","nodeType":"ElementaryTypeName","src":"7546:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"7524:40:5"},"scope":3984,"src":"7176:908:5","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[5616],"body":{"id":2705,"nodeType":"Block","src":"8450:451:5","statements":[{"expression":{"argumentTypes":null,"id":2673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[null,{"argumentTypes":null,"id":2659,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2657,"src":"8463:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2660,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"8460:13:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$_t_uint256_$","typeString":"tuple(,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2662,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"8505:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2663,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"8524:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2664,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2642,"src":"8542:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2665,"name":"amountTokenMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2644,"src":"8565:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2666,"name":"amountAMBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2646,"src":"8593:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2669,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8627:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}],"id":2668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8619:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2667,"name":"address","nodeType":"ElementaryTypeName","src":"8619:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8619:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":2671,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2650,"src":"8646:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2661,"name":"removeLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"8476:15:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"}},"id":2672,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8476:188:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"8460:204:5","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2674,"nodeType":"ExpressionStatement","src":"8460:204:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2678,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"8715:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2679,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2648,"src":"8734:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2686,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8782:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}],"id":2685,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8774:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2684,"name":"address","nodeType":"ElementaryTypeName","src":"8774:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8774:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2681,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2640,"src":"8757:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2680,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"8750:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5766_$","typeString":"type(contract IERC20)"}},"id":2682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8750:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}},"id":2683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5727,"src":"8750:23:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":2688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8750:38:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2675,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"8674:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":2677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":8391,"src":"8674:27:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":2689,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8674:124:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2690,"nodeType":"ExpressionStatement","src":"8674:124:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2695,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2657,"src":"8829:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2692,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"8814:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2691,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"8808:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":2693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8808:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":2694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":5785,"src":"8808:20:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":2696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8808:31:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2697,"nodeType":"ExpressionStatement","src":"8808:31:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2701,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2648,"src":"8880:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2702,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2657,"src":"8884:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2698,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"8849:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":2700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"8849:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":2703,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8849:45:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2704,"nodeType":"ExpressionStatement","src":"8849:45:5"}]},"documentation":null,"functionSelector":"1e0bcdae","id":2706,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":2654,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2650,"src":"8412:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2655,"modifierName":{"argumentTypes":null,"id":2653,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"8405:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"8405:16:5"}],"name":"removeLiquidityAMBSupportingFeeOnTransferTokens","nodeType":"FunctionDefinition","overrides":{"id":2652,"nodeType":"OverrideSpecifier","overrides":[],"src":"8396:8:5"},"parameters":{"id":2651,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2640,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":2706,"src":"8226:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2639,"name":"address","nodeType":"ElementaryTypeName","src":"8226:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2642,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":2706,"src":"8249:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2641,"name":"uint256","nodeType":"ElementaryTypeName","src":"8249:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2644,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":2706,"src":"8276:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2643,"name":"uint256","nodeType":"ElementaryTypeName","src":"8276:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2646,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":2706,"src":"8308:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2645,"name":"uint256","nodeType":"ElementaryTypeName","src":"8308:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2648,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":2706,"src":"8338:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2647,"name":"address","nodeType":"ElementaryTypeName","src":"8338:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2650,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":2706,"src":"8358:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2649,"name":"uint256","nodeType":"ElementaryTypeName","src":"8358:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8216:164:5"},"returnParameters":{"id":2658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2657,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":2706,"src":"8431:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2656,"name":"uint256","nodeType":"ElementaryTypeName","src":"8431:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"8430:19:5"},"scope":3984,"src":"8160:741:5","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[5641],"body":{"id":2780,"nodeType":"Block","src":"9272:529:5","statements":[{"assignments":[2733],"declarations":[{"constant":false,"id":2733,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":2780,"src":"9282:12:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2732,"name":"address","nodeType":"ElementaryTypeName","src":"9282:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":2740,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2736,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"9318:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2737,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2708,"src":"9327:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2738,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"9334:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2734,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"9297:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"9297:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":2739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9297:42:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"9282:57:5"},{"assignments":[2742],"declarations":[{"constant":false,"id":2742,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":2780,"src":"9349:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2741,"name":"uint256","nodeType":"ElementaryTypeName","src":"9349:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2751,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"id":2743,"name":"approveMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2720,"src":"9365:10:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":2749,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"9392:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9365:36:5","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"9386:2:5","subExpression":{"argumentTypes":null,"hexValue":"31","id":2746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9387:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":2745,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9378:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2744,"name":"uint256","nodeType":"ElementaryTypeName","src":"9378:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9378:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9349:52:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2756,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9448:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"9448:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2760,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9480:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}],"id":2759,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9472:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2758,"name":"address","nodeType":"ElementaryTypeName","src":"9472:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9472:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":2762,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2742,"src":"9499:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2763,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2718,"src":"9518:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2764,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2722,"src":"9540:1:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":2765,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2724,"src":"9555:1:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":2766,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2726,"src":"9570:1:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2753,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2733,"src":"9422:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2752,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"9411:10:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":2754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9411:16:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"permit","nodeType":"MemberAccess","referencedDeclaration":193,"src":"9411:23:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$","typeString":"function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"}},"id":2767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9411:170:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2768,"nodeType":"ExpressionStatement","src":"9411:170:5"},{"expression":{"argumentTypes":null,"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2769,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2730,"src":"9591:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2771,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2708,"src":"9664:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2772,"name":"liquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"9683:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2773,"name":"amountTokenMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2712,"src":"9706:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2774,"name":"amountAMBMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"9734:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2775,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2716,"src":"9760:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2776,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2718,"src":"9776:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2770,"name":"removeLiquidityAMBSupportingFeeOnTransferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2706,"src":"9603:47:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,uint256,address,uint256) returns (uint256)"}},"id":2777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9603:191:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9591:203:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2779,"nodeType":"ExpressionStatement","src":"9591:203:5"}]},"documentation":null,"functionSelector":"cf795867","id":2781,"implemented":true,"kind":"function","modifiers":[],"name":"removeLiquidityAMBWithPermitSupportingFeeOnTransferTokens","nodeType":"FunctionDefinition","overrides":{"id":2728,"nodeType":"OverrideSpecifier","overrides":[],"src":"9235:8:5"},"parameters":{"id":2727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2708,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":2781,"src":"8983:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2707,"name":"address","nodeType":"ElementaryTypeName","src":"8983:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2710,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":2781,"src":"9006:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2709,"name":"uint256","nodeType":"ElementaryTypeName","src":"9006:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2712,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":2781,"src":"9033:22:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2711,"name":"uint256","nodeType":"ElementaryTypeName","src":"9033:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2714,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":2781,"src":"9065:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2713,"name":"uint256","nodeType":"ElementaryTypeName","src":"9065:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2716,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":2781,"src":"9095:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2715,"name":"address","nodeType":"ElementaryTypeName","src":"9095:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2718,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":2781,"src":"9115:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2717,"name":"uint256","nodeType":"ElementaryTypeName","src":"9115:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2720,"mutability":"mutable","name":"approveMax","nodeType":"VariableDeclaration","overrides":null,"scope":2781,"src":"9141:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2719,"name":"bool","nodeType":"ElementaryTypeName","src":"9141:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":2722,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","overrides":null,"scope":2781,"src":"9166:7:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2721,"name":"uint8","nodeType":"ElementaryTypeName","src":"9166:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":2724,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":2781,"src":"9183:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2723,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9183:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":2726,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","overrides":null,"scope":2781,"src":"9202:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2725,"name":"bytes32","nodeType":"ElementaryTypeName","src":"9202:7:5","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"8973:244:5"},"returnParameters":{"id":2731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2730,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":2781,"src":"9253:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2729,"name":"uint256","nodeType":"ElementaryTypeName","src":"9253:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"9252:19:5"},"scope":3984,"src":"8907:894:5","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"body":{"id":2896,"nodeType":"Block","src":"10032:687:5","statements":[{"body":{"id":2894,"nodeType":"Block","src":"10084:629:5","statements":[{"assignments":[2805,2807],"declarations":[{"constant":false,"id":2805,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","overrides":null,"scope":2894,"src":"10099:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2804,"name":"address","nodeType":"ElementaryTypeName","src":"10099:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2807,"mutability":"mutable","name":"output","nodeType":"VariableDeclaration","overrides":null,"scope":2894,"src":"10114:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2806,"name":"address","nodeType":"ElementaryTypeName","src":"10114:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":2817,"initialValue":{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2808,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2787,"src":"10133:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2810,"indexExpression":{"argumentTypes":null,"id":2809,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"10138:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10133:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2811,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2787,"src":"10142:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2815,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2812,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"10147:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"31","id":2813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10151:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10147:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10142:11:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2816,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10132:22:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"10098:56:5"},{"assignments":[2819,null],"declarations":[{"constant":false,"id":2819,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","overrides":null,"scope":2894,"src":"10169:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2818,"name":"address","nodeType":"ElementaryTypeName","src":"10169:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},null],"id":2825,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2822,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"10213:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2823,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"10220:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2820,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"10189:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sortTokens","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"10189:23:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":2824,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10189:38:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"10168:59:5"},{"assignments":[2827],"declarations":[{"constant":false,"id":2827,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":2894,"src":"10241:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2826,"name":"uint256","nodeType":"ElementaryTypeName","src":"10241:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2833,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2828,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2784,"src":"10261:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2832,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2829,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"10269:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"31","id":2830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10273:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10269:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10261:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10241:34:5"},{"assignments":[2835,2837],"declarations":[{"constant":false,"id":2835,"mutability":"mutable","name":"amount0Out","nodeType":"VariableDeclaration","overrides":null,"scope":2894,"src":"10290:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2834,"name":"uint256","nodeType":"ElementaryTypeName","src":"10290:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2837,"mutability":"mutable","name":"amount1Out","nodeType":"VariableDeclaration","overrides":null,"scope":2894,"src":"10310:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2836,"name":"uint256","nodeType":"ElementaryTypeName","src":"10310:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2854,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2838,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"10332:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":2839,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2819,"src":"10341:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10332:15:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":2847,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2827,"src":"10409:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":2850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10428:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2849,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10420:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2848,"name":"uint256","nodeType":"ElementaryTypeName","src":"10420:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10420:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2852,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10408:23:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":2853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10332:99:5","trueExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":2843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10375:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2842,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10367:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2841,"name":"uint256","nodeType":"ElementaryTypeName","src":"10367:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":2844,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10367:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2845,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2827,"src":"10379:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2846,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10366:23:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10289:142:5"},{"assignments":[2856],"declarations":[{"constant":false,"id":2856,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":2894,"src":"10445:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2855,"name":"address","nodeType":"ElementaryTypeName","src":"10445:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":2875,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2857,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"10458:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2858,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2787,"src":"10462:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10462:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"32","id":2860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10476:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10462:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10458:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":2873,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2789,"src":"10565:3:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10458:110:5","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2865,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"10517:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2866,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"10526:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2867,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2787,"src":"10534:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2871,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2868,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"10539:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"32","id":2869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10543:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10539:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10534:11:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2863,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"10496:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"10496:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":2872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10496:50:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10445:123:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2885,"name":"amount0Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2835,"src":"10661:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2886,"name":"amount1Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2837,"src":"10673:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2887,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2856,"src":"10685:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":2890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10699:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2889,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"10689:9:5","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2888,"name":"bytes","nodeType":"ElementaryTypeName","src":"10693:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10689:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2879,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"10614:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2880,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2805,"src":"10623:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2881,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2807,"src":"10630:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2877,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"10593:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2878,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"10593:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":2882,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10593:44:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2876,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"10582:10:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":2883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10582:56:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":2884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":302,"src":"10582:78:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,uint256,address,bytes memory) external"}},"id":2892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10582:120:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2893,"nodeType":"ExpressionStatement","src":"10582:120:5"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":2795,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"10058:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2796,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2787,"src":"10062:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"10062:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":2798,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10076:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10062:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10058:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2895,"initializationExpression":{"assignments":[2793],"declarations":[{"constant":false,"id":2793,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","overrides":null,"scope":2895,"src":"10047:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2792,"name":"uint256","nodeType":"ElementaryTypeName","src":"10047:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":2794,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"10047:9:5"},"loopExpression":{"expression":{"argumentTypes":null,"id":2802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"10079:3:5","subExpression":{"argumentTypes":null,"id":2801,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2793,"src":"10079:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2803,"nodeType":"ExpressionStatement","src":"10079:3:5"},"nodeType":"ForStatement","src":"10042:671:5"}]},"documentation":null,"id":2897,"implemented":true,"kind":"function","modifiers":[],"name":"_swap","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":2790,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2784,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":2897,"src":"9932:24:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2782,"name":"uint256","nodeType":"ElementaryTypeName","src":"9932:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2783,"length":null,"nodeType":"ArrayTypeName","src":"9932:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2787,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":2897,"src":"9966:21:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2785,"name":"address","nodeType":"ElementaryTypeName","src":"9966:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2786,"length":null,"nodeType":"ArrayTypeName","src":"9966:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2789,"mutability":"mutable","name":"_to","nodeType":"VariableDeclaration","overrides":null,"scope":2897,"src":"9997:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2788,"name":"address","nodeType":"ElementaryTypeName","src":"9997:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"9922:92:5"},"returnParameters":{"id":2791,"nodeType":"ParameterList","parameters":[],"src":"10032:0:5"},"scope":3984,"src":"9908:811:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[5457],"body":{"id":2968,"nodeType":"Block","src":"11022:432:5","statements":[{"expression":{"argumentTypes":null,"id":2925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2918,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"11032:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2921,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"11069:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2922,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2899,"src":"11078:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2923,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"11088:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"argumentTypes":null,"id":2919,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"11042:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsOut","nodeType":"MemberAccess","referencedDeclaration":6238,"src":"11042:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":2924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11042:51:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"11032:61:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2926,"nodeType":"ExpressionStatement","src":"11032:61:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2928,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"11124:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2933,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2929,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"11132:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11132:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":2931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11149:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"11132:18:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11124:27:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":2934,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2901,"src":"11155:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11124:43:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54","id":2936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11181:41:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""}],"id":2927,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11103:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11103:129:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2938,"nodeType":"ExpressionStatement","src":"11103:129:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2942,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"11287:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":2944,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":2943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11292:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11287:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":2945,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11308:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"11308:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2949,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"11353:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2950,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"11362:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":2952,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":2951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11367:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11362:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2953,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"11371:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":2955,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":2954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11376:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11371:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":2947,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"11332:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"11332:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":2956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11332:47:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":2957,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"11393:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2959,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":2958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11401:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11393:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":2939,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"11242:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":2941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"11242:31:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":2960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11242:171:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2961,"nodeType":"ExpressionStatement","src":"11242:171:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2963,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2916,"src":"11429:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":2964,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"11438:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":2965,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2906,"src":"11444:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2962,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2897,"src":"11423:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,address)"}},"id":2966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11423:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2967,"nodeType":"ExpressionStatement","src":"11423:24:5"}]},"documentation":null,"functionSelector":"38ed1739","id":2969,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":2912,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2908,"src":"10965:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2913,"modifierName":{"argumentTypes":null,"id":2911,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"10958:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"10958:16:5"}],"name":"swapExactTokensForTokens","nodeType":"FunctionDefinition","overrides":{"id":2910,"nodeType":"OverrideSpecifier","overrides":[],"src":"10941:8:5"},"parameters":{"id":2909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2899,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":2969,"src":"10768:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2898,"name":"uint256","nodeType":"ElementaryTypeName","src":"10768:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2901,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":2969,"src":"10794:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2900,"name":"uint256","nodeType":"ElementaryTypeName","src":"10794:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2904,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":2969,"src":"10824:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2902,"name":"address","nodeType":"ElementaryTypeName","src":"10824:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2903,"length":null,"nodeType":"ArrayTypeName","src":"10824:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2906,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":2969,"src":"10857:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2905,"name":"address","nodeType":"ElementaryTypeName","src":"10857:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2908,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":2969,"src":"10877:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2907,"name":"uint256","nodeType":"ElementaryTypeName","src":"10877:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"10758:141:5"},"returnParameters":{"id":2917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2916,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":2969,"src":"10992:24:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2914,"name":"uint256","nodeType":"ElementaryTypeName","src":"10992:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2915,"length":null,"nodeType":"ArrayTypeName","src":"10992:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"10991:26:5"},"scope":3984,"src":"10725:729:5","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[5474],"body":{"id":3037,"nodeType":"Block","src":"11757:410:5","statements":[{"expression":{"argumentTypes":null,"id":2997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":2990,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"11767:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":2993,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"11803:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":2994,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2971,"src":"11812:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":2995,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2976,"src":"11823:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"argumentTypes":null,"id":2991,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"11777:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":2992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsIn","nodeType":"MemberAccess","referencedDeclaration":6323,"src":"11777:25:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":2996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11777:51:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"11767:61:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":2998,"nodeType":"ExpressionStatement","src":"11767:61:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3000,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"11859:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3002,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11867:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11859:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":3003,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2973,"src":"11873:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11859:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a204558434553534956455f494e5055545f414d4f554e54","id":3005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11898:37:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9c3fa372d5166c099d57201e1902047f94c00ffabf14faec2d8fa47afb0e04d0","typeString":"literal_string \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\""},"value":"AstraRouter: EXCESSIVE_INPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9c3fa372d5166c099d57201e1902047f94c00ffabf14faec2d8fa47afb0e04d0","typeString":"literal_string \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\""}],"id":2999,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11838:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11838:107:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3007,"nodeType":"ExpressionStatement","src":"11838:107:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3011,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2976,"src":"12000:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3013,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12005:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12000:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3014,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12021:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12021:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3018,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"12066:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3019,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2976,"src":"12075:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3021,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3020,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12080:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12075:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3022,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2976,"src":"12084:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3024,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":3023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12089:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12084:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":3016,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"12045:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"12045:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":3025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12045:47:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3026,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"12106:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3028,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12114:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12106:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3008,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"11955:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":3010,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"11955:31:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":3029,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11955:171:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3030,"nodeType":"ExpressionStatement","src":"11955:171:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3032,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"12142:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":3033,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2976,"src":"12151:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":3034,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"12157:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3031,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2897,"src":"12136:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,address)"}},"id":3035,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12136:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3036,"nodeType":"ExpressionStatement","src":"12136:24:5"}]},"documentation":null,"functionSelector":"8803dbee","id":3038,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":2984,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2980,"src":"11700:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2985,"modifierName":{"argumentTypes":null,"id":2983,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"11693:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"11693:16:5"}],"name":"swapTokensForExactTokens","nodeType":"FunctionDefinition","overrides":{"id":2982,"nodeType":"OverrideSpecifier","overrides":[],"src":"11676:8:5"},"parameters":{"id":2981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2971,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":3038,"src":"11503:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2970,"name":"uint256","nodeType":"ElementaryTypeName","src":"11503:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2973,"mutability":"mutable","name":"amountInMax","nodeType":"VariableDeclaration","overrides":null,"scope":3038,"src":"11530:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2972,"name":"uint256","nodeType":"ElementaryTypeName","src":"11530:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":2976,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":3038,"src":"11559:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":2974,"name":"address","nodeType":"ElementaryTypeName","src":"11559:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2975,"length":null,"nodeType":"ArrayTypeName","src":"11559:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":2978,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":3038,"src":"11592:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2977,"name":"address","nodeType":"ElementaryTypeName","src":"11592:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":2980,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":3038,"src":"11612:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2979,"name":"uint256","nodeType":"ElementaryTypeName","src":"11612:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"11493:141:5"},"returnParameters":{"id":2989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2988,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":3038,"src":"11727:24:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":2986,"name":"uint256","nodeType":"ElementaryTypeName","src":"11727:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2987,"length":null,"nodeType":"ArrayTypeName","src":"11727:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"11726:26:5"},"scope":3984,"src":"11460:707:5","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[5489],"body":{"id":3125,"nodeType":"Block","src":"12457:532:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3058,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3043,"src":"12475:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3060,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12480:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12475:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":3061,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"12486:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12475:15:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e56414c49445f50415448","id":3063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12492:27:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""},"value":"AstraRouter: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""}],"id":3057,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12467:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12467:53:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3065,"nodeType":"ExpressionStatement","src":"12467:53:5"},{"expression":{"argumentTypes":null,"id":3074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3066,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"12530:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3069,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"12567:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3070,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12576:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12576:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3072,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3043,"src":"12587:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"argumentTypes":null,"id":3067,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"12540:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsOut","nodeType":"MemberAccess","referencedDeclaration":6238,"src":"12540:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":3073,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12540:52:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"12530:62:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3075,"nodeType":"ExpressionStatement","src":"12530:62:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3084,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3077,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"12623:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3082,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3078,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"12631:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3079,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"12631:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12648:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12631:18:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12623:27:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":3083,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3040,"src":"12654:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12623:43:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54","id":3085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12680:41:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""}],"id":3076,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12602:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12602:129:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3087,"nodeType":"ExpressionStatement","src":"12602:129:5"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3089,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"12747:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3088,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"12741:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":3090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12741:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":3091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":5771,"src":"12741:19:5","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":3095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3092,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"12768:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3094,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3093,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12776:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12768:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"12741:38:5","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":3096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12741:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3097,"nodeType":"ExpressionStatement","src":"12741:40:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3105,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"12870:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3106,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3043,"src":"12879:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3108,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12884:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12879:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3109,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3043,"src":"12888:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3111,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":3110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12893:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12888:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":3103,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"12849:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"12849:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":3112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12849:47:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3113,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"12914:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3115,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12922:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12914:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3100,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"12817:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3099,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"12811:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":3101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12811:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":3102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"12811:20:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3116,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12811:127:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3098,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"12791:6:5","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":3117,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12791:157:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3118,"nodeType":"ExpressionStatement","src":"12791:157:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3120,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"12964:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":3121,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3043,"src":"12973:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":3122,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3045,"src":"12979:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3119,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2897,"src":"12958:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,address)"}},"id":3123,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12958:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3124,"nodeType":"ExpressionStatement","src":"12958:24:5"}]},"documentation":null,"functionSelector":"ac8ee3b6","id":3126,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":3051,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3047,"src":"12400:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3052,"modifierName":{"argumentTypes":null,"id":3050,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"12393:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"12393:16:5"}],"name":"swapExactAMBForTokens","nodeType":"FunctionDefinition","overrides":{"id":3049,"nodeType":"OverrideSpecifier","overrides":[],"src":"12376:8:5"},"parameters":{"id":3048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3040,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":3126,"src":"12213:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3039,"name":"uint256","nodeType":"ElementaryTypeName","src":"12213:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3043,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":3126,"src":"12243:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3041,"name":"address","nodeType":"ElementaryTypeName","src":"12243:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3042,"length":null,"nodeType":"ArrayTypeName","src":"12243:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":3045,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":3126,"src":"12276:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3044,"name":"address","nodeType":"ElementaryTypeName","src":"12276:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":3047,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":3126,"src":"12296:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3046,"name":"uint256","nodeType":"ElementaryTypeName","src":"12296:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"12203:115:5"},"returnParameters":{"id":3056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3055,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":3126,"src":"12427:24:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3053,"name":"uint256","nodeType":"ElementaryTypeName","src":"12427:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3054,"length":null,"nodeType":"ArrayTypeName","src":"12427:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"12426:26:5"},"scope":3984,"src":"12173:816:5","stateMutability":"payable","virtual":true,"visibility":"external"},{"baseFunctions":[5506],"body":{"id":3233,"nodeType":"Block","src":"13289:630:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3148,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3133,"src":"13307:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3153,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3152,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3149,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3133,"src":"13312:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13312:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13326:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13312:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13307:21:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":3154,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"13332:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13307:29:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e56414c49445f50415448","id":3156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13338:27:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""},"value":"AstraRouter: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""}],"id":3147,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13299:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13299:67:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3158,"nodeType":"ExpressionStatement","src":"13299:67:5"},{"expression":{"argumentTypes":null,"id":3166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3159,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"13376:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3162,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"13412:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3163,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3128,"src":"13421:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3164,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3133,"src":"13432:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"argumentTypes":null,"id":3160,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"13386:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3161,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsIn","nodeType":"MemberAccess","referencedDeclaration":6323,"src":"13386:25:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":3165,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13386:51:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"13376:61:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3167,"nodeType":"ExpressionStatement","src":"13376:61:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3169,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"13468:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3171,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13476:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13468:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":3172,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3130,"src":"13482:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13468:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a204558434553534956455f494e5055545f414d4f554e54","id":3174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13507:37:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9c3fa372d5166c099d57201e1902047f94c00ffabf14faec2d8fa47afb0e04d0","typeString":"literal_string \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\""},"value":"AstraRouter: EXCESSIVE_INPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9c3fa372d5166c099d57201e1902047f94c00ffabf14faec2d8fa47afb0e04d0","typeString":"literal_string \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\""}],"id":3168,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13447:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13447:107:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3176,"nodeType":"ExpressionStatement","src":"13447:107:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3180,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3133,"src":"13609:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3182,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13614:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13609:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3183,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13630:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13630:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3187,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"13675:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3188,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3133,"src":"13684:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3190,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13689:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13684:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3191,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3133,"src":"13693:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3193,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":3192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13698:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13693:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":3185,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"13654:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"13654:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":3194,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13654:47:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3195,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"13715:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3197,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3196,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13723:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13715:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3177,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"13564:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":3179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"13564:31:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":3198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13564:171:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3199,"nodeType":"ExpressionStatement","src":"13564:171:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3201,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"13751:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":3202,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3133,"src":"13760:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3205,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13774:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}],"id":3204,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13766:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3203,"name":"address","nodeType":"ElementaryTypeName","src":"13766:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":3206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13766:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":3200,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2897,"src":"13745:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,address)"}},"id":3207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13745:35:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3208,"nodeType":"ExpressionStatement","src":"13745:35:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3213,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"13811:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3218,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3214,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"13819:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13819:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13836:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13819:18:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13811:27:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3210,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"13796:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3209,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"13790:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":3211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13790:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":3212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":5785,"src":"13790:20:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":3219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13790:49:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3220,"nodeType":"ExpressionStatement","src":"13790:49:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3224,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3135,"src":"13880:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3225,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"13884:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3230,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3226,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"13892:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"13892:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13909:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"13892:18:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13884:27:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3221,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"13849:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":3223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"13849:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13849:63:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3232,"nodeType":"ExpressionStatement","src":"13849:63:5"}]},"documentation":null,"functionSelector":"40d2463f","id":3234,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":3141,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3137,"src":"13232:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3142,"modifierName":{"argumentTypes":null,"id":3140,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"13225:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"13225:16:5"}],"name":"swapTokensForExactAMB","nodeType":"FunctionDefinition","overrides":{"id":3139,"nodeType":"OverrideSpecifier","overrides":[],"src":"13208:8:5"},"parameters":{"id":3138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3128,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":3234,"src":"13035:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3127,"name":"uint256","nodeType":"ElementaryTypeName","src":"13035:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3130,"mutability":"mutable","name":"amountInMax","nodeType":"VariableDeclaration","overrides":null,"scope":3234,"src":"13062:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3129,"name":"uint256","nodeType":"ElementaryTypeName","src":"13062:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3133,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":3234,"src":"13091:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3131,"name":"address","nodeType":"ElementaryTypeName","src":"13091:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3132,"length":null,"nodeType":"ArrayTypeName","src":"13091:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":3135,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":3234,"src":"13124:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3134,"name":"address","nodeType":"ElementaryTypeName","src":"13124:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":3137,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":3234,"src":"13144:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3136,"name":"uint256","nodeType":"ElementaryTypeName","src":"13144:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13025:141:5"},"returnParameters":{"id":3146,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3145,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":3234,"src":"13259:24:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3143,"name":"uint256","nodeType":"ElementaryTypeName","src":"13259:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3144,"length":null,"nodeType":"ArrayTypeName","src":"13259:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"13258:26:5"},"scope":3984,"src":"12995:924:5","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[5523],"body":{"id":3344,"nodeType":"Block","src":"14219:652:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3256,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3241,"src":"14237:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3261,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3257,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3241,"src":"14242:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14242:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14256:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14242:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14237:21:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":3262,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"14262:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"14237:29:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e56414c49445f50415448","id":3264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14268:27:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""},"value":"AstraRouter: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""}],"id":3255,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14229:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14229:67:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3266,"nodeType":"ExpressionStatement","src":"14229:67:5"},{"expression":{"argumentTypes":null,"id":3274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3267,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"14306:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3270,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"14343:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3271,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"14352:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3272,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3241,"src":"14362:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"argumentTypes":null,"id":3268,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"14316:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsOut","nodeType":"MemberAccess","referencedDeclaration":6238,"src":"14316:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":3273,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14316:51:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"14306:61:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3275,"nodeType":"ExpressionStatement","src":"14306:61:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3277,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"14398:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3282,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3278,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"14406:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14406:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3280,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14423:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14406:18:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14398:27:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":3283,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3238,"src":"14429:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14398:43:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54","id":3285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14455:41:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""}],"id":3276,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"14377:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14377:129:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3287,"nodeType":"ExpressionStatement","src":"14377:129:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3291,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3241,"src":"14561:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3293,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14566:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14561:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3294,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14582:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3295,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14582:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3298,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"14627:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3299,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3241,"src":"14636:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3301,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14641:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14636:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3302,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3241,"src":"14645:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3304,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":3303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14650:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14645:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":3296,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"14606:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"14606:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":3305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14606:47:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3306,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"14667:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3308,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3307,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14675:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14667:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3288,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"14516:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":3290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"14516:31:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":3309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14516:171:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3310,"nodeType":"ExpressionStatement","src":"14516:171:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3312,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"14703:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":3313,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3241,"src":"14712:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3316,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"14726:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}],"id":3315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14718:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3314,"name":"address","nodeType":"ElementaryTypeName","src":"14718:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":3317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14718:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":3311,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2897,"src":"14697:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,address)"}},"id":3318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14697:35:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3319,"nodeType":"ExpressionStatement","src":"14697:35:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3324,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"14763:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3329,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3325,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"14771:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14771:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14788:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14771:18:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14763:27:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3321,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"14748:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3320,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"14742:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":3322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14742:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":3323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":5785,"src":"14742:20:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":3330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14742:49:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3331,"nodeType":"ExpressionStatement","src":"14742:49:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3335,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"14832:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3336,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"14836:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3341,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3337,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"14844:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"14844:14:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14861:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14844:18:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14836:27:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3332,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"14801:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":3334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"14801:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14801:63:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3343,"nodeType":"ExpressionStatement","src":"14801:63:5"}]},"documentation":null,"functionSelector":"e5dee373","id":3345,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":3249,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3245,"src":"14162:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3250,"modifierName":{"argumentTypes":null,"id":3248,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"14155:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"14155:16:5"}],"name":"swapExactTokensForAMB","nodeType":"FunctionDefinition","overrides":{"id":3247,"nodeType":"OverrideSpecifier","overrides":[],"src":"14138:8:5"},"parameters":{"id":3246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3236,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":3345,"src":"13965:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3235,"name":"uint256","nodeType":"ElementaryTypeName","src":"13965:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3238,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":3345,"src":"13991:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3237,"name":"uint256","nodeType":"ElementaryTypeName","src":"13991:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3241,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":3345,"src":"14021:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3239,"name":"address","nodeType":"ElementaryTypeName","src":"14021:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3240,"length":null,"nodeType":"ArrayTypeName","src":"14021:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":3243,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":3345,"src":"14054:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3242,"name":"address","nodeType":"ElementaryTypeName","src":"14054:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":3245,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":3345,"src":"14074:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3244,"name":"uint256","nodeType":"ElementaryTypeName","src":"14074:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"13955:141:5"},"returnParameters":{"id":3254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3253,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":3345,"src":"14189:24:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3251,"name":"uint256","nodeType":"ElementaryTypeName","src":"14189:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3252,"length":null,"nodeType":"ArrayTypeName","src":"14189:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"14188:26:5"},"scope":3984,"src":"13925:946:5","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[5538],"body":{"id":3449,"nodeType":"Block","src":"15158:658:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3365,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"15176:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3367,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3366,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15181:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15176:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":3368,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"15187:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15176:15:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e56414c49445f50415448","id":3370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15193:27:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""},"value":"AstraRouter: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""}],"id":3364,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15168:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15168:53:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3372,"nodeType":"ExpressionStatement","src":"15168:53:5"},{"expression":{"argumentTypes":null,"id":3380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3373,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3362,"src":"15231:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3376,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"15267:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3377,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3347,"src":"15276:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3378,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"15287:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"expression":{"argumentTypes":null,"id":3374,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"15241:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsIn","nodeType":"MemberAccess","referencedDeclaration":6323,"src":"15241:25:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":3379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15241:51:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"15231:61:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3381,"nodeType":"ExpressionStatement","src":"15231:61:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3383,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3362,"src":"15323:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3385,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15331:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15323:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3386,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15337:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"15337:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15323:23:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a204558434553534956455f494e5055545f414d4f554e54","id":3389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15360:37:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9c3fa372d5166c099d57201e1902047f94c00ffabf14faec2d8fa47afb0e04d0","typeString":"literal_string \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\""},"value":"AstraRouter: EXCESSIVE_INPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9c3fa372d5166c099d57201e1902047f94c00ffabf14faec2d8fa47afb0e04d0","typeString":"literal_string \"AstraRouter: EXCESSIVE_INPUT_AMOUNT\""}],"id":3382,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15302:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15302:105:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3391,"nodeType":"ExpressionStatement","src":"15302:105:5"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3393,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"15423:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3392,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"15417:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":3394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15417:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":3395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":5771,"src":"15417:19:5","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":3399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3396,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3362,"src":"15444:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3398,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15452:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15444:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"15417:38:5","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":3400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15417:40:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3401,"nodeType":"ExpressionStatement","src":"15417:40:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3409,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"15546:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3410,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"15555:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3412,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15560:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15555:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3413,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"15564:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3415,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":3414,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15569:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15564:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":3407,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"15525:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"15525:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":3416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15525:47:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3417,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3362,"src":"15590:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3419,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15598:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15590:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3404,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"15493:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3403,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"15487:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":3405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15487:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":3406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"15487:20:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15487:127:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3402,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"15467:6:5","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":3421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15467:157:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3422,"nodeType":"ExpressionStatement","src":"15467:157:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3424,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3362,"src":"15640:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},{"argumentTypes":null,"id":3425,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3350,"src":"15649:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":3426,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3352,"src":"15655:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3423,"name":"_swap","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2897,"src":"15634:5:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (uint256[] memory,address[] memory,address)"}},"id":3427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15634:24:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3428,"nodeType":"ExpressionStatement","src":"15634:24:5"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3429,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15707:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"15707:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3431,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3362,"src":"15719:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3433,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3432,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15727:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15719:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15707:22:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":3448,"nodeType":"IfStatement","src":"15703:106:5","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3438,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15774:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"15774:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3440,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15786:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"15786:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3442,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3362,"src":"15798:7:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":3444,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15806:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15798:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15786:22:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3435,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"15743:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":3437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"15743:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15743:66:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3447,"nodeType":"ExpressionStatement","src":"15743:66:5"}}]},"documentation":null,"functionSelector":"ef0dc4be","id":3450,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":3358,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3354,"src":"15101:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3359,"modifierName":{"argumentTypes":null,"id":3357,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"15094:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"15094:16:5"}],"name":"swapAMBForExactTokens","nodeType":"FunctionDefinition","overrides":{"id":3356,"nodeType":"OverrideSpecifier","overrides":[],"src":"15077:8:5"},"parameters":{"id":3355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3347,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":3450,"src":"14917:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3346,"name":"uint256","nodeType":"ElementaryTypeName","src":"14917:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3350,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":3450,"src":"14944:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3348,"name":"address","nodeType":"ElementaryTypeName","src":"14944:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3349,"length":null,"nodeType":"ArrayTypeName","src":"14944:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":3352,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":3450,"src":"14977:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3351,"name":"address","nodeType":"ElementaryTypeName","src":"14977:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":3354,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":3450,"src":"14997:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3353,"name":"uint256","nodeType":"ElementaryTypeName","src":"14997:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"14907:112:5"},"returnParameters":{"id":3363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3362,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":3450,"src":"15128:24:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3360,"name":"uint256","nodeType":"ElementaryTypeName","src":"15128:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3361,"length":null,"nodeType":"ArrayTypeName","src":"15128:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"15127:26:5"},"scope":3984,"src":"14877:939:5","stateMutability":"payable","virtual":true,"visibility":"external"},{"body":{"id":3613,"nodeType":"Block","src":"16078:1393:5","statements":[{"body":{"id":3611,"nodeType":"Block","src":"16130:1335:5","statements":[{"assignments":[3471,3473],"declarations":[{"constant":false,"id":3471,"mutability":"mutable","name":"input","nodeType":"VariableDeclaration","overrides":null,"scope":3611,"src":"16145:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3470,"name":"address","nodeType":"ElementaryTypeName","src":"16145:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":3473,"mutability":"mutable","name":"output","nodeType":"VariableDeclaration","overrides":null,"scope":3611,"src":"16160:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3472,"name":"address","nodeType":"ElementaryTypeName","src":"16160:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":3483,"initialValue":{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3474,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3453,"src":"16179:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3476,"indexExpression":{"argumentTypes":null,"id":3475,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"16184:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16179:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3477,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3453,"src":"16188:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3481,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3478,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"16193:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16197:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16193:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16188:11:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":3482,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16178:22:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"16144:56:5"},{"assignments":[3485,null],"declarations":[{"constant":false,"id":3485,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","overrides":null,"scope":3611,"src":"16215:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3484,"name":"address","nodeType":"ElementaryTypeName","src":"16215:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},null],"id":3491,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3488,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3471,"src":"16259:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3489,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3473,"src":"16266:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":3486,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"16235:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sortTokens","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"16235:23:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":3490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16235:38:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"16214:59:5"},{"assignments":[3493],"declarations":[{"constant":false,"id":3493,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":3611,"src":"16287:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"},"typeName":{"contractScope":null,"id":3492,"name":"IAstraPair","nodeType":"UserDefinedTypeName","referencedDeclaration":318,"src":"16287:10:5","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"value":null,"visibility":"internal"}],"id":3502,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3497,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"16354:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3498,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3471,"src":"16363:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3499,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3473,"src":"16370:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":3495,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"16333:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"16333:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":3500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16333:44:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3494,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"16305:10:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":3501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16305:86:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"nodeType":"VariableDeclarationStatement","src":"16287:104:5"},{"assignments":[3504],"declarations":[{"constant":false,"id":3504,"mutability":"mutable","name":"amountInput","nodeType":"VariableDeclaration","overrides":null,"scope":3611,"src":"16405:19:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3503,"name":"uint256","nodeType":"ElementaryTypeName","src":"16405:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3505,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"16405:19:5"},{"assignments":[3507],"declarations":[{"constant":false,"id":3507,"mutability":"mutable","name":"amountOutput","nodeType":"VariableDeclaration","overrides":null,"scope":3611,"src":"16438:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3506,"name":"uint256","nodeType":"ElementaryTypeName","src":"16438:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3508,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"16438:20:5"},{"id":3556,"nodeType":"Block","src":"16472:619:5","statements":[{"assignments":[3510,3512,null],"declarations":[{"constant":false,"id":3510,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","overrides":null,"scope":3556,"src":"16547:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3509,"name":"uint256","nodeType":"ElementaryTypeName","src":"16547:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3512,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","overrides":null,"scope":3556,"src":"16565:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3511,"name":"uint256","nodeType":"ElementaryTypeName","src":"16565:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":3516,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":3513,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3493,"src":"16587:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":3514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":260,"src":"16587:16:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"function () view external returns (uint112,uint112,uint32)"}},"id":3515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16587:18:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"tuple(uint112,uint112,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"16546:59:5"},{"assignments":[3518,3520],"declarations":[{"constant":false,"id":3518,"mutability":"mutable","name":"reserveInput","nodeType":"VariableDeclaration","overrides":null,"scope":3556,"src":"16624:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3517,"name":"uint256","nodeType":"ElementaryTypeName","src":"16624:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3520,"mutability":"mutable","name":"reserveOutput","nodeType":"VariableDeclaration","overrides":null,"scope":3556,"src":"16646:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3519,"name":"uint256","nodeType":"ElementaryTypeName","src":"16646:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3531,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3521,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3471,"src":"16671:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":3522,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3485,"src":"16680:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16671:15:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":3527,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3512,"src":"16753:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3528,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3510,"src":"16763:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3529,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16752:20:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":3530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16671:101:5","trueExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":3524,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3510,"src":"16710:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3525,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3512,"src":"16720:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3526,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16709:20:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16623:149:5"},{"expression":{"argumentTypes":null,"id":3545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3532,"name":"amountInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"16790:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3543,"name":"reserveInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3518,"src":"16868:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3539,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3493,"src":"16836:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}],"id":3538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16828:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3537,"name":"address","nodeType":"ElementaryTypeName","src":"16828:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":3540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16828:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3534,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3471,"src":"16811:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3533,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"16804:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5766_$","typeString":"type(contract IERC20)"}},"id":3535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16804:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}},"id":3536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5727,"src":"16804:23:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16804:38:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"16804:42:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16804:94:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16790:108:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3546,"nodeType":"ExpressionStatement","src":"16790:108:5"},{"expression":{"argumentTypes":null,"id":3554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3547,"name":"amountOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"16916:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3550,"name":"amountInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3504,"src":"16978:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3551,"name":"reserveInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3518,"src":"17011:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3552,"name":"reserveOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3520,"src":"17045:13:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3548,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"16931:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountOut","nodeType":"MemberAccess","referencedDeclaration":6097,"src":"16931:25:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16931:145:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16916:160:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3555,"nodeType":"ExpressionStatement","src":"16916:160:5"}]},{"assignments":[3558,3560],"declarations":[{"constant":false,"id":3558,"mutability":"mutable","name":"amount0Out","nodeType":"VariableDeclaration","overrides":null,"scope":3611,"src":"17105:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3557,"name":"uint256","nodeType":"ElementaryTypeName","src":"17105:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3560,"mutability":"mutable","name":"amount1Out","nodeType":"VariableDeclaration","overrides":null,"scope":3611,"src":"17125:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3559,"name":"uint256","nodeType":"ElementaryTypeName","src":"17125:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3577,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3561,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3471,"src":"17147:5:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":3562,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3485,"src":"17156:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17147:15:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":3570,"name":"amountOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"17227:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":3573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17249:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17241:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3571,"name":"uint256","nodeType":"ElementaryTypeName","src":"17241:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":3574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17241:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3575,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17226:26:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":3576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"17147:105:5","trueExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":3566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17190:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17182:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3564,"name":"uint256","nodeType":"ElementaryTypeName","src":"17182:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":3567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17182:10:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3568,"name":"amountOutput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3507,"src":"17194:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3569,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17181:26:5","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"17104:148:5"},{"assignments":[3579],"declarations":[{"constant":false,"id":3579,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":3611,"src":"17266:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3578,"name":"address","nodeType":"ElementaryTypeName","src":"17266:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":3598,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3580,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"17279:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3581,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3453,"src":"17283:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17283:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"32","id":3583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17297:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"17283:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17279:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":3596,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3455,"src":"17386:3:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"17279:110:5","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3588,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"17338:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3589,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3473,"src":"17347:6:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3590,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3453,"src":"17355:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3594,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3591,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"17360:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"32","id":3592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17364:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"17360:5:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17355:11:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":3586,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"17317:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"17317:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":3595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17317:50:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"17266:123:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3602,"name":"amount0Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3558,"src":"17413:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3603,"name":"amount1Out","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3560,"src":"17425:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3604,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3579,"src":"17437:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":3607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17451:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":3606,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17441:9:5","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":3605,"name":"bytes","nodeType":"ElementaryTypeName","src":"17445:5:5","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":3608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17441:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":3599,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3493,"src":"17403:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":3601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swap","nodeType":"MemberAccess","referencedDeclaration":302,"src":"17403:9:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (uint256,uint256,address,bytes memory) external"}},"id":3609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17403:51:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3610,"nodeType":"ExpressionStatement","src":"17403:51:5"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3461,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"16104:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3462,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3453,"src":"16108:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":3463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"16108:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16122:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"16108:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16104:19:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3612,"initializationExpression":{"assignments":[3459],"declarations":[{"constant":false,"id":3459,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","overrides":null,"scope":3612,"src":"16093:9:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3458,"name":"uint256","nodeType":"ElementaryTypeName","src":"16093:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3460,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"16093:9:5"},"loopExpression":{"expression":{"argumentTypes":null,"id":3468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16125:3:5","subExpression":{"argumentTypes":null,"id":3467,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3459,"src":"16125:1:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3469,"nodeType":"ExpressionStatement","src":"16125:3:5"},"nodeType":"ForStatement","src":"16088:1377:5"}]},"documentation":null,"id":3614,"implemented":true,"kind":"function","modifiers":[],"name":"_swapSupportingFeeOnTransferTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":3456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3453,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":3614,"src":"16012:21:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3451,"name":"address","nodeType":"ElementaryTypeName","src":"16012:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3452,"length":null,"nodeType":"ArrayTypeName","src":"16012:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":3455,"mutability":"mutable","name":"_to","nodeType":"VariableDeclaration","overrides":null,"scope":3614,"src":"16043:11:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3454,"name":"address","nodeType":"ElementaryTypeName","src":"16043:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"16002:58:5"},"returnParameters":{"id":3457,"nodeType":"ParameterList","parameters":[],"src":"16078:0:5"},"scope":3984,"src":"15959:1512:5","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"baseFunctions":[5655],"body":{"id":3692,"nodeType":"Block","src":"17724:507:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3635,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"17779:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3637,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17784:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17779:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3638,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17800:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17800:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3642,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"17845:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3643,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"17854:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3645,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17859:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17854:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3646,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"17863:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3648,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":3647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17868:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17863:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":3640,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"17824:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"17824:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":3649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17824:47:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3650,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3616,"src":"17885:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3632,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"17734:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":3634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"17734:31:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":3651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17734:169:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3652,"nodeType":"ExpressionStatement","src":"17734:169:5"},{"assignments":[3654],"declarations":[{"constant":false,"id":3654,"mutability":"mutable","name":"balanceBefore","nodeType":"VariableDeclaration","overrides":null,"scope":3692,"src":"17913:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3653,"name":"uint256","nodeType":"ElementaryTypeName","src":"17913:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3666,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3664,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"17977:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3656,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"17944:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3661,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3657,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"17949:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"17949:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17963:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17949:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17944:21:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3655,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"17937:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5766_$","typeString":"type(contract IERC20)"}},"id":3662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17937:29:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}},"id":3663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5727,"src":"17937:39:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17937:43:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17913:67:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3668,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"18025:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":3669,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"18031:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3667,"name":"_swapSupportingFeeOnTransferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3614,"src":"17990:34:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (address[] memory,address)"}},"id":3670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17990:44:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3671,"nodeType":"ExpressionStatement","src":"17990:44:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3685,"name":"balanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3654,"src":"18113:13:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3682,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3623,"src":"18105:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3674,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"18072:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3679,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3675,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3621,"src":"18077:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"18077:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18091:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18077:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18072:21:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3673,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"18065:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5766_$","typeString":"type(contract IERC20)"}},"id":3680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18065:29:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}},"id":3681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5727,"src":"18065:39:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18065:43:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"18065:47:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18065:62:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":3687,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3618,"src":"18147:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18065:94:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54","id":3689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18173:41:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""}],"id":3672,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"18044:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18044:180:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3691,"nodeType":"ExpressionStatement","src":"18044:180:5"}]},"documentation":null,"functionSelector":"5c11d795","id":3693,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":3629,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3625,"src":"17714:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3630,"modifierName":{"argumentTypes":null,"id":3628,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"17707:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"17707:16:5"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","nodeType":"FunctionDefinition","overrides":{"id":3627,"nodeType":"OverrideSpecifier","overrides":[],"src":"17698:8:5"},"parameters":{"id":3626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3616,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":3693,"src":"17549:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3615,"name":"uint256","nodeType":"ElementaryTypeName","src":"17549:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3618,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":3693,"src":"17575:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3617,"name":"uint256","nodeType":"ElementaryTypeName","src":"17575:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3621,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":3693,"src":"17605:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3619,"name":"address","nodeType":"ElementaryTypeName","src":"17605:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3620,"length":null,"nodeType":"ArrayTypeName","src":"17605:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":3623,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":3693,"src":"17638:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3622,"name":"address","nodeType":"ElementaryTypeName","src":"17638:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":3625,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":3693,"src":"17658:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3624,"name":"uint256","nodeType":"ElementaryTypeName","src":"17658:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"17539:141:5"},"returnParameters":{"id":3631,"nodeType":"ParameterList","parameters":[],"src":"17724:0:5"},"scope":3984,"src":"17477:754:5","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[5667],"body":{"id":3789,"nodeType":"Block","src":"18463:642:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3710,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"18481:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3712,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18486:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18481:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":3713,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"18492:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18481:15:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e56414c49445f50415448","id":3715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18498:27:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""},"value":"AstraRouter: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""}],"id":3709,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"18473:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18473:53:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3717,"nodeType":"ExpressionStatement","src":"18473:53:5"},{"assignments":[3719],"declarations":[{"constant":false,"id":3719,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":3789,"src":"18536:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3718,"name":"uint256","nodeType":"ElementaryTypeName","src":"18536:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3722,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3720,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"18555:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","referencedDeclaration":null,"src":"18555:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18536:28:5"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3724,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"18580:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3723,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"18574:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":3725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18574:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":3726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":5771,"src":"18574:19:5","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":3728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"argumentTypes":null,"id":3727,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"18601:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"18574:36:5","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":3729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18574:38:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3730,"nodeType":"ExpressionStatement","src":"18574:38:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3738,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"18701:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3739,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"18710:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3741,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18715:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18710:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3742,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"18719:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3744,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":3743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18724:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18719:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":3736,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"18680:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"18680:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":3745,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18680:47:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3746,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"18745:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3733,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"18648:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3732,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"18642:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":3734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18642:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":3735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"18642:20:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":3747,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18642:125:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":3731,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"18622:6:5","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":3748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18622:155:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3749,"nodeType":"ExpressionStatement","src":"18622:155:5"},{"assignments":[3751],"declarations":[{"constant":false,"id":3751,"mutability":"mutable","name":"balanceBefore","nodeType":"VariableDeclaration","overrides":null,"scope":3789,"src":"18787:21:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3750,"name":"uint256","nodeType":"ElementaryTypeName","src":"18787:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3763,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3761,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"18851:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3753,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"18818:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3758,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3754,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"18823:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"18823:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18837:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18823:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18818:21:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3752,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"18811:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5766_$","typeString":"type(contract IERC20)"}},"id":3759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18811:29:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}},"id":3760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5727,"src":"18811:39:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3762,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18811:43:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18787:67:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3765,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"18899:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":3766,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"18905:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3764,"name":"_swapSupportingFeeOnTransferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3614,"src":"18864:34:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (address[] memory,address)"}},"id":3767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18864:44:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3768,"nodeType":"ExpressionStatement","src":"18864:44:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3782,"name":"balanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3751,"src":"18987:13:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3779,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3700,"src":"18979:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3771,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"18946:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3776,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3772,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3698,"src":"18951:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"18951:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18965:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18951:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18946:21:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3770,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"18939:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5766_$","typeString":"type(contract IERC20)"}},"id":3777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18939:29:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}},"id":3778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5727,"src":"18939:39:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18939:43:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"18939:47:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":3783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18939:62:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":3784,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3695,"src":"19021:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18939:94:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54","id":3786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19047:41:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""}],"id":3769,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"18918:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18918:180:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3788,"nodeType":"ExpressionStatement","src":"18918:180:5"}]},"documentation":null,"functionSelector":"c1c222df","id":3790,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":3706,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3702,"src":"18453:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3707,"modifierName":{"argumentTypes":null,"id":3705,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"18446:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"18446:16:5"}],"name":"swapExactAMBForTokensSupportingFeeOnTransferTokens","nodeType":"FunctionDefinition","overrides":{"id":3704,"nodeType":"OverrideSpecifier","overrides":[],"src":"18437:8:5"},"parameters":{"id":3703,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3695,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":3790,"src":"18306:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3694,"name":"uint256","nodeType":"ElementaryTypeName","src":"18306:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3698,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":3790,"src":"18336:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3696,"name":"address","nodeType":"ElementaryTypeName","src":"18336:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3697,"length":null,"nodeType":"ArrayTypeName","src":"18336:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":3700,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":3790,"src":"18369:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3699,"name":"address","nodeType":"ElementaryTypeName","src":"18369:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":3702,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":3790,"src":"18389:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3701,"name":"uint256","nodeType":"ElementaryTypeName","src":"18389:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"18296:115:5"},"returnParameters":{"id":3708,"nodeType":"ParameterList","parameters":[],"src":"18463:0:5"},"scope":3984,"src":"18237:868:5","stateMutability":"payable","virtual":true,"visibility":"external"},{"baseFunctions":[5681],"body":{"id":3882,"nodeType":"Block","src":"19355:612:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3809,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"19373:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3814,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3810,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"19378:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"19378:11:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":3812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19392:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19378:15:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19373:21:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":3815,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"19398:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19373:29:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e56414c49445f50415448","id":3817,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19404:27:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""},"value":"AstraRouter: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28c283dcdab1437edb85040b80a8f7573dcd81bfd690995c5b1903a9390e63eb","typeString":"literal_string \"AstraRouter: INVALID_PATH\""}],"id":3808,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19365:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19365:67:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3819,"nodeType":"ExpressionStatement","src":"19365:67:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3823,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"19487:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3825,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19492:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19487:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":3826,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"19508:3:5","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3827,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"19508:10:5","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3830,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"19553:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3831,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"19562:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3833,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":3832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19567:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19562:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":3834,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"19571:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":3836,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":3835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19576:1:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19571:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":3828,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"19532:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"19532:20:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":3837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19532:47:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3838,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3792,"src":"19593:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3820,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"19442:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":3822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"19442:31:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":3839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19442:169:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3840,"nodeType":"ExpressionStatement","src":"19442:169:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3842,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3797,"src":"19656:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3845,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"19670:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}],"id":3844,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19662:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3843,"name":"address","nodeType":"ElementaryTypeName","src":"19662:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":3846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19662:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":3841,"name":"_swapSupportingFeeOnTransferTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3614,"src":"19621:34:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$","typeString":"function (address[] memory,address)"}},"id":3847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19621:55:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3848,"nodeType":"ExpressionStatement","src":"19621:55:5"},{"assignments":[3850],"declarations":[{"constant":false,"id":3850,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":3882,"src":"19686:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3849,"name":"uint256","nodeType":"ElementaryTypeName","src":"19686:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":3860,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3857,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"19737:4:5","typeDescriptions":{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AstraRouter02_$3984","typeString":"contract AstraRouter02"}],"id":3856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19729:7:5","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3855,"name":"address","nodeType":"ElementaryTypeName","src":"19729:7:5","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":3858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19729:13:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3852,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"19713:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3851,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"19706:6:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5766_$","typeString":"type(contract IERC20)"}},"id":3853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19706:12:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}},"id":3854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":5727,"src":"19706:22:5","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":3859,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19706:37:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19686:57:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":3862,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3850,"src":"19774:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":3863,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3794,"src":"19787:12:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19774:25:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54","id":3865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19813:41:5","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""},"value":"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5864fb573074408a64fd055de53df0b1ec59e401421999a8e12ce5b81ae84161","typeString":"literal_string \"AstraRouter: INSUFFICIENT_OUTPUT_AMOUNT\""}],"id":3861,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"19753:7:5","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19753:111:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3867,"nodeType":"ExpressionStatement","src":"19753:111:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3872,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3850,"src":"19895:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3869,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1966,"src":"19880:4:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3868,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"19874:5:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":3870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19874:11:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":3871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":5785,"src":"19874:20:5","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":3873,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19874:31:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3874,"nodeType":"ExpressionStatement","src":"19874:31:5"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3878,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3799,"src":"19946:2:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3879,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3850,"src":"19950:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3875,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"19915:14:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":3877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferAMB","nodeType":"MemberAccess","referencedDeclaration":8462,"src":"19915:30:5","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":3880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19915:45:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3881,"nodeType":"ExpressionStatement","src":"19915:45:5"}]},"documentation":null,"functionSelector":"8402322d","id":3883,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"argumentTypes":null,"id":3805,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3801,"src":"19345:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3806,"modifierName":{"argumentTypes":null,"id":3804,"name":"ensure","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1980,"src":"19338:6:5","typeDescriptions":{"typeIdentifier":"t_modifier$_t_uint256_$","typeString":"modifier (uint256)"}},"nodeType":"ModifierInvocation","src":"19338:16:5"}],"name":"swapExactTokensForAMBSupportingFeeOnTransferTokens","nodeType":"FunctionDefinition","overrides":{"id":3803,"nodeType":"OverrideSpecifier","overrides":[],"src":"19329:8:5"},"parameters":{"id":3802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3792,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":3883,"src":"19180:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3791,"name":"uint256","nodeType":"ElementaryTypeName","src":"19180:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3794,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":3883,"src":"19206:20:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3793,"name":"uint256","nodeType":"ElementaryTypeName","src":"19206:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3797,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":3883,"src":"19236:23:5","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3795,"name":"address","nodeType":"ElementaryTypeName","src":"19236:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3796,"length":null,"nodeType":"ArrayTypeName","src":"19236:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":3799,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":3883,"src":"19269:10:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3798,"name":"address","nodeType":"ElementaryTypeName","src":"19269:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":3801,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":3883,"src":"19289:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3800,"name":"uint256","nodeType":"ElementaryTypeName","src":"19289:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"19170:141:5"},"returnParameters":{"id":3807,"nodeType":"ParameterList","parameters":[],"src":"19355:0:5"},"scope":3984,"src":"19111:856:5","stateMutability":"nonpayable","virtual":true,"visibility":"external"},{"baseFunctions":[5549],"body":{"id":3902,"nodeType":"Block","src":"20161:71:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3897,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3885,"src":"20197:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3898,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3887,"src":"20206:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3899,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3889,"src":"20216:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3895,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"20178:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"quote","nodeType":"MemberAccess","referencedDeclaration":6037,"src":"20178:18:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20178:47:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3894,"id":3901,"nodeType":"Return","src":"20171:54:5"}]},"documentation":null,"functionSelector":"ad615dec","id":3903,"implemented":true,"kind":"function","modifiers":[],"name":"quote","nodeType":"FunctionDefinition","overrides":{"id":3891,"nodeType":"OverrideSpecifier","overrides":[],"src":"20126:8:5"},"parameters":{"id":3890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3885,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":3903,"src":"20032:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3884,"name":"uint256","nodeType":"ElementaryTypeName","src":"20032:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3887,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","overrides":null,"scope":3903,"src":"20057:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3886,"name":"uint256","nodeType":"ElementaryTypeName","src":"20057:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3889,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","overrides":null,"scope":3903,"src":"20083:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3888,"name":"uint256","nodeType":"ElementaryTypeName","src":"20083:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"20022:83:5"},"returnParameters":{"id":3894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3893,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":3903,"src":"20144:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3892,"name":"uint256","nodeType":"ElementaryTypeName","src":"20144:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"20143:17:5"},"scope":3984,"src":"20008:224:5","stateMutability":"pure","virtual":true,"visibility":"public"},{"baseFunctions":[5560],"body":{"id":3922,"nodeType":"Block","src":"20404:82:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3917,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3905,"src":"20447:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3918,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3907,"src":"20457:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3919,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3909,"src":"20468:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3915,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"20421:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountOut","nodeType":"MemberAccess","referencedDeclaration":6097,"src":"20421:25:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20421:58:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3914,"id":3921,"nodeType":"Return","src":"20414:65:5"}]},"documentation":null,"functionSelector":"054d50d4","id":3923,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountOut","nodeType":"FunctionDefinition","overrides":{"id":3911,"nodeType":"OverrideSpecifier","overrides":[],"src":"20367:8:5"},"parameters":{"id":3910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3905,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":3923,"src":"20269:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3904,"name":"uint256","nodeType":"ElementaryTypeName","src":"20269:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3907,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","overrides":null,"scope":3923,"src":"20295:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3906,"name":"uint256","nodeType":"ElementaryTypeName","src":"20295:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3909,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","overrides":null,"scope":3923,"src":"20322:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3908,"name":"uint256","nodeType":"ElementaryTypeName","src":"20322:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"20259:87:5"},"returnParameters":{"id":3914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3913,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":3923,"src":"20385:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3912,"name":"uint256","nodeType":"ElementaryTypeName","src":"20385:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"20384:19:5"},"scope":3984,"src":"20238:248:5","stateMutability":"pure","virtual":true,"visibility":"public"},{"baseFunctions":[5571],"body":{"id":3942,"nodeType":"Block","src":"20657:82:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3937,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3925,"src":"20699:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3938,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3927,"src":"20710:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3939,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3929,"src":"20721:10:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":3935,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"20674:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountIn","nodeType":"MemberAccess","referencedDeclaration":6157,"src":"20674:24:5","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":3940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20674:58:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3934,"id":3941,"nodeType":"Return","src":"20667:65:5"}]},"documentation":null,"functionSelector":"85f8c259","id":3943,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountIn","nodeType":"FunctionDefinition","overrides":{"id":3931,"nodeType":"OverrideSpecifier","overrides":[],"src":"20621:8:5"},"parameters":{"id":3930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3925,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":3943,"src":"20522:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3924,"name":"uint256","nodeType":"ElementaryTypeName","src":"20522:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3927,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","overrides":null,"scope":3943,"src":"20549:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3926,"name":"uint256","nodeType":"ElementaryTypeName","src":"20549:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3929,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","overrides":null,"scope":3943,"src":"20576:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3928,"name":"uint256","nodeType":"ElementaryTypeName","src":"20576:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"20512:88:5"},"returnParameters":{"id":3934,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3933,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":3943,"src":"20639:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3932,"name":"uint256","nodeType":"ElementaryTypeName","src":"20639:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"20638:18:5"},"scope":3984,"src":"20492:247:5","stateMutability":"pure","virtual":true,"visibility":"public"},{"baseFunctions":[5582],"body":{"id":3962,"nodeType":"Block","src":"20917:75:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3957,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"20961:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3958,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3945,"src":"20970:8:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3959,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3948,"src":"20980:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"expression":{"argumentTypes":null,"id":3955,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"20934:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsOut","nodeType":"MemberAccess","referencedDeclaration":6238,"src":"20934:26:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":3960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20934:51:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":3954,"id":3961,"nodeType":"Return","src":"20927:58:5"}]},"documentation":null,"functionSelector":"d06ca61f","id":3963,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsOut","nodeType":"FunctionDefinition","overrides":{"id":3950,"nodeType":"OverrideSpecifier","overrides":[],"src":"20861:8:5"},"parameters":{"id":3949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3945,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":3963,"src":"20768:16:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3944,"name":"uint256","nodeType":"ElementaryTypeName","src":"20768:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3948,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":3963,"src":"20786:21:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3946,"name":"address","nodeType":"ElementaryTypeName","src":"20786:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3947,"length":null,"nodeType":"ArrayTypeName","src":"20786:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"20767:41:5"},"returnParameters":{"id":3954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3953,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":3963,"src":"20887:24:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3951,"name":"uint256","nodeType":"ElementaryTypeName","src":"20887:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3952,"length":null,"nodeType":"ArrayTypeName","src":"20887:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"20886:26:5"},"scope":3984,"src":"20745:247:5","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[5593],"body":{"id":3982,"nodeType":"Block","src":"21170:75:5","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":3977,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1963,"src":"21213:7:5","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":3978,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3965,"src":"21222:9:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":3979,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3968,"src":"21233:4:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"expression":{"argumentTypes":null,"id":3975,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"21187:12:5","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":3976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsIn","nodeType":"MemberAccess","referencedDeclaration":6323,"src":"21187:25:5","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":3980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21187:51:5","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"functionReturnParameters":3974,"id":3981,"nodeType":"Return","src":"21180:58:5"}]},"documentation":null,"functionSelector":"1f00ca74","id":3983,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsIn","nodeType":"FunctionDefinition","overrides":{"id":3970,"nodeType":"OverrideSpecifier","overrides":[],"src":"21114:8:5"},"parameters":{"id":3969,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3965,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":3983,"src":"21020:17:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3964,"name":"uint256","nodeType":"ElementaryTypeName","src":"21020:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":3968,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":3983,"src":"21039:21:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":3966,"name":"address","nodeType":"ElementaryTypeName","src":"21039:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3967,"length":null,"nodeType":"ArrayTypeName","src":"21039:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"21019:42:5"},"returnParameters":{"id":3974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3973,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":3983,"src":"21140:24:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3971,"name":"uint256","nodeType":"ElementaryTypeName","src":"21140:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3972,"length":null,"nodeType":"ArrayTypeName","src":"21140:9:5","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"21139:26:5"},"scope":3984,"src":"20998:247:5","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":3985,"src":"298:20949:5"}],"src":"0:21248:5"},"id":5},"contracts/periphery/examples/ExampleComputeLiquidityValue.sol":{"ast":{"absolutePath":"contracts/periphery/examples/ExampleComputeLiquidityValue.sol","exportedSymbols":{"ExampleComputeLiquidityValue":[4119]},"id":4120,"nodeType":"SourceUnit","nodes":[{"id":3986,"literals":["solidity","=","0.6",".6"],"nodeType":"PragmaDirective","src":"0:23:6"},{"absolutePath":"contracts/periphery/libraries/AstraLiquidityMathLibrary.sol","file":"../libraries/AstraLiquidityMathLibrary.sol","id":3987,"nodeType":"ImportDirective","scope":4120,"sourceUnit":6791,"src":"25:52:6","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":4119,"linearizedBaseContracts":[4119],"name":"ExampleComputeLiquidityValue","nodeType":"ContractDefinition","nodes":[{"id":3990,"libraryName":{"contractScope":null,"id":3988,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":8303,"src":"129:8:6","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$8303","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"123:27:6","typeName":{"id":3989,"name":"uint256","nodeType":"ElementaryTypeName","src":"142:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"functionSelector":"c45a0155","id":3992,"mutability":"immutable","name":"factory","nodeType":"VariableDeclaration","overrides":null,"scope":4119,"src":"156:32:6","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3991,"name":"address","nodeType":"ElementaryTypeName","src":"156:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"body":{"id":4001,"nodeType":"Block","src":"232:35:6","statements":[{"expression":{"argumentTypes":null,"id":3999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":3997,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"242:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":3998,"name":"factory_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3994,"src":"252:8:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"242:18:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4000,"nodeType":"ExpressionStatement","src":"242:18:6"}]},"documentation":null,"id":4002,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":3995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3994,"mutability":"mutable","name":"factory_","nodeType":"VariableDeclaration","overrides":null,"scope":4002,"src":"207:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3993,"name":"address","nodeType":"ElementaryTypeName","src":"207:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"206:18:6"},"returnParameters":{"id":3996,"nodeType":"ParameterList","parameters":[],"src":"232:0:6"},"scope":4119,"src":"195:72:6","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4026,"nodeType":"Block","src":"550:204:6","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4019,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"632:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4020,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4004,"src":"653:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4021,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4006,"src":"673:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4022,"name":"truePriceTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4008,"src":"693:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":4023,"name":"truePriceTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4010,"src":"722:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4017,"name":"AstraLiquidityMathLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6790,"src":"567:25:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLiquidityMathLibrary_$6790_$","typeString":"type(library AstraLiquidityMathLibrary)"}},"id":4018,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReservesAfterArbitrage","nodeType":"MemberAccess","referencedDeclaration":6523,"src":"567:51:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address,uint256,uint256) view returns (uint256,uint256)"}},"id":4024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"567:180:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":4016,"id":4025,"nodeType":"Return","src":"560:187:6"}]},"documentation":null,"functionSelector":"3558e94c","id":4027,"implemented":true,"kind":"function","modifiers":[],"name":"getReservesAfterArbitrage","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4004,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":4027,"src":"380:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4003,"name":"address","nodeType":"ElementaryTypeName","src":"380:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4006,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":4027,"src":"404:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4005,"name":"address","nodeType":"ElementaryTypeName","src":"404:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4008,"mutability":"mutable","name":"truePriceTokenA","nodeType":"VariableDeclaration","overrides":null,"scope":4027,"src":"428:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4007,"name":"uint256","nodeType":"ElementaryTypeName","src":"428:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4010,"mutability":"mutable","name":"truePriceTokenB","nodeType":"VariableDeclaration","overrides":null,"scope":4027,"src":"461:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4009,"name":"uint256","nodeType":"ElementaryTypeName","src":"461:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"370:120:6"},"returnParameters":{"id":4016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4013,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","overrides":null,"scope":4027,"src":"514:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4012,"name":"uint256","nodeType":"ElementaryTypeName","src":"514:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4015,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","overrides":null,"scope":4027,"src":"532:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4014,"name":"uint256","nodeType":"ElementaryTypeName","src":"532:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"513:36:6"},"scope":4119,"src":"336:418:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":4048,"nodeType":"Block","src":"1018:167:6","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4042,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"1092:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4043,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4029,"src":"1113:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4044,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4031,"src":"1133:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4045,"name":"liquidityAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4033,"src":"1153:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4040,"name":"AstraLiquidityMathLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6790,"src":"1035:25:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLiquidityMathLibrary_$6790_$","typeString":"type(library AstraLiquidityMathLibrary)"}},"id":4041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityValue","nodeType":"MemberAccess","referencedDeclaration":6698,"src":"1035:43:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address,uint256) view returns (uint256,uint256)"}},"id":4046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1035:143:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":4039,"id":4047,"nodeType":"Return","src":"1028:150:6"}]},"documentation":null,"functionSelector":"d9b7a6e7","id":4049,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityValue","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4029,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":4049,"src":"851:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4028,"name":"address","nodeType":"ElementaryTypeName","src":"851:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4031,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":4049,"src":"875:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4030,"name":"address","nodeType":"ElementaryTypeName","src":"875:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4033,"mutability":"mutable","name":"liquidityAmount","nodeType":"VariableDeclaration","overrides":null,"scope":4049,"src":"899:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4032,"name":"uint256","nodeType":"ElementaryTypeName","src":"899:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"841:87:6"},"returnParameters":{"id":4039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4036,"mutability":"mutable","name":"tokenAAmount","nodeType":"VariableDeclaration","overrides":null,"scope":4049,"src":"961:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4035,"name":"uint256","nodeType":"ElementaryTypeName","src":"961:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4038,"mutability":"mutable","name":"tokenBAmount","nodeType":"VariableDeclaration","overrides":null,"scope":4049,"src":"991:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4037,"name":"uint256","nodeType":"ElementaryTypeName","src":"991:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"951:66:6"},"scope":4119,"src":"815:370:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":4076,"nodeType":"Block","src":"1557:246:6","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4068,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"1652:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4069,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4051,"src":"1673:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4070,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4053,"src":"1693:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4071,"name":"truePriceTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4055,"src":"1713:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":4072,"name":"truePriceTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4057,"src":"1742:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":4073,"name":"liquidityAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4059,"src":"1771:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4066,"name":"AstraLiquidityMathLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6790,"src":"1574:25:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLiquidityMathLibrary_$6790_$","typeString":"type(library AstraLiquidityMathLibrary)"}},"id":4067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityValueAfterArbitrageToPrice","nodeType":"MemberAccess","referencedDeclaration":6789,"src":"1574:64:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address,uint256,uint256,uint256) view returns (uint256,uint256)"}},"id":4074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1574:222:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":4065,"id":4075,"nodeType":"Return","src":"1567:229:6"}]},"documentation":null,"functionSelector":"69a2fcbd","id":4077,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityValueAfterArbitrageToPrice","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4051,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":4077,"src":"1324:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4050,"name":"address","nodeType":"ElementaryTypeName","src":"1324:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4053,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":4077,"src":"1348:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4052,"name":"address","nodeType":"ElementaryTypeName","src":"1348:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4055,"mutability":"mutable","name":"truePriceTokenA","nodeType":"VariableDeclaration","overrides":null,"scope":4077,"src":"1372:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4054,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4057,"mutability":"mutable","name":"truePriceTokenB","nodeType":"VariableDeclaration","overrides":null,"scope":4077,"src":"1405:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4056,"name":"uint256","nodeType":"ElementaryTypeName","src":"1405:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4059,"mutability":"mutable","name":"liquidityAmount","nodeType":"VariableDeclaration","overrides":null,"scope":4077,"src":"1438:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4058,"name":"uint256","nodeType":"ElementaryTypeName","src":"1438:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1314:153:6"},"returnParameters":{"id":4065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4062,"mutability":"mutable","name":"tokenAAmount","nodeType":"VariableDeclaration","overrides":null,"scope":4077,"src":"1500:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4061,"name":"uint256","nodeType":"ElementaryTypeName","src":"1500:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4064,"mutability":"mutable","name":"tokenBAmount","nodeType":"VariableDeclaration","overrides":null,"scope":4077,"src":"1530:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4063,"name":"uint256","nodeType":"ElementaryTypeName","src":"1530:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1490:66:6"},"scope":4119,"src":"1267:536:6","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":4117,"nodeType":"Block","src":"2135:347:6","statements":[{"assignments":[4093],"declarations":[{"constant":false,"id":4093,"mutability":"mutable","name":"gasBefore","nodeType":"VariableDeclaration","overrides":null,"scope":4117,"src":"2145:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4092,"name":"uint","nodeType":"ElementaryTypeName","src":"2145:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4096,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":4094,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2162:7:6","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2162:9:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2145:26:6"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4100,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3992,"src":"2259:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4101,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4079,"src":"2280:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4102,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4081,"src":"2300:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4103,"name":"truePriceTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4083,"src":"2320:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":4104,"name":"truePriceTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4085,"src":"2349:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":4105,"name":"liquidityAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4087,"src":"2378:15:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4097,"name":"AstraLiquidityMathLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6790,"src":"2181:25:6","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLiquidityMathLibrary_$6790_$","typeString":"type(library AstraLiquidityMathLibrary)"}},"id":4099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getLiquidityValueAfterArbitrageToPrice","nodeType":"MemberAccess","referencedDeclaration":6789,"src":"2181:64:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address,uint256,uint256,uint256) view returns (uint256,uint256)"}},"id":4106,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2181:222:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":4107,"nodeType":"ExpressionStatement","src":"2181:222:6"},{"assignments":[4109],"declarations":[{"constant":false,"id":4109,"mutability":"mutable","name":"gasAfter","nodeType":"VariableDeclaration","overrides":null,"scope":4117,"src":"2413:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4108,"name":"uint","nodeType":"ElementaryTypeName","src":"2413:4:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4112,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":4110,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"2429:7:6","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":4111,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2429:9:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2413:25:6"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4113,"name":"gasBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"2455:9:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":4114,"name":"gasAfter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4109,"src":"2467:8:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2455:20:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4091,"id":4116,"nodeType":"Return","src":"2448:27:6"}]},"documentation":null,"functionSelector":"80caa353","id":4118,"implemented":true,"kind":"function","modifiers":[],"name":"getGasCostOfGetLiquidityValueAfterArbitrageToPrice","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4079,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":4118,"src":"1945:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4078,"name":"address","nodeType":"ElementaryTypeName","src":"1945:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4081,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":4118,"src":"1969:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4080,"name":"address","nodeType":"ElementaryTypeName","src":"1969:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4083,"mutability":"mutable","name":"truePriceTokenA","nodeType":"VariableDeclaration","overrides":null,"scope":4118,"src":"1993:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4082,"name":"uint256","nodeType":"ElementaryTypeName","src":"1993:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4085,"mutability":"mutable","name":"truePriceTokenB","nodeType":"VariableDeclaration","overrides":null,"scope":4118,"src":"2026:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4084,"name":"uint256","nodeType":"ElementaryTypeName","src":"2026:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4087,"mutability":"mutable","name":"liquidityAmount","nodeType":"VariableDeclaration","overrides":null,"scope":4118,"src":"2059:23:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4086,"name":"uint256","nodeType":"ElementaryTypeName","src":"2059:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1935:153:6"},"returnParameters":{"id":4091,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4090,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":4118,"src":"2121:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4089,"name":"uint256","nodeType":"ElementaryTypeName","src":"2121:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2111:23:6"},"scope":4119,"src":"1876:606:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4120,"src":"79:2405:6"}],"src":"0:2485:6"},"id":6},"contracts/periphery/examples/ExampleFlashSwap.sol":{"ast":{"absolutePath":"contracts/periphery/examples/ExampleFlashSwap.sol","exportedSymbols":{"ExampleFlashSwap":[4496]},"id":4497,"nodeType":"SourceUnit","nodes":[{"id":4121,"literals":["solidity","=","0.6",".6"],"nodeType":"PragmaDirective","src":"0:23:7"},{"absolutePath":"contracts/core/interfaces/IAstraCallee.sol","file":"../../core/interfaces/IAstraCallee.sol","id":4122,"nodeType":"ImportDirective","scope":4497,"sourceUnit":14,"src":"25:48:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/AstraLibrary.sol","file":"../libraries/AstraLibrary.sol","id":4123,"nodeType":"ImportDirective","scope":4497,"sourceUnit":6325,"src":"75:39:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/V1/IAstraV1Factory.sol","file":"../interfaces/V1/IAstraV1Factory.sol","id":4124,"nodeType":"ImportDirective","scope":4497,"sourceUnit":5853,"src":"115:46:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/V1/IAstraV1Exchange.sol","file":"../interfaces/V1/IAstraV1Exchange.sol","id":4125,"nodeType":"ImportDirective","scope":4497,"sourceUnit":5843,"src":"162:47:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/IAstraRouter01.sol","file":"../interfaces/IAstraRouter01.sol","id":4126,"nodeType":"ImportDirective","scope":4497,"sourceUnit":5595,"src":"210:42:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/IERC20.sol","file":"../interfaces/IERC20.sol","id":4127,"nodeType":"ImportDirective","scope":4497,"sourceUnit":5767,"src":"253:34:7","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/ISAMB.sol","file":"../interfaces/ISAMB.sol","id":4128,"nodeType":"ImportDirective","scope":4497,"sourceUnit":5787,"src":"288:33:7","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":4129,"name":"IAstraCallee","nodeType":"UserDefinedTypeName","referencedDeclaration":13,"src":"352:12:7","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraCallee_$13","typeString":"contract IAstraCallee"}},"id":4130,"nodeType":"InheritanceSpecifier","src":"352:12:7"}],"contractDependencies":[13],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":4496,"linearizedBaseContracts":[4496,13],"name":"ExampleFlashSwap","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":4132,"mutability":"immutable","name":"factoryV1","nodeType":"VariableDeclaration","overrides":null,"scope":4496,"src":"371:35:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Factory_$5852","typeString":"contract IAstraV1Factory"},"typeName":{"contractScope":null,"id":4131,"name":"IAstraV1Factory","nodeType":"UserDefinedTypeName","referencedDeclaration":5852,"src":"371:15:7","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Factory_$5852","typeString":"contract IAstraV1Factory"}},"value":null,"visibility":"internal"},{"constant":false,"id":4134,"mutability":"immutable","name":"factory","nodeType":"VariableDeclaration","overrides":null,"scope":4496,"src":"412:25:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4133,"name":"address","nodeType":"ElementaryTypeName","src":"412:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4136,"mutability":"immutable","name":"SAMB","nodeType":"VariableDeclaration","overrides":null,"scope":4496,"src":"443:20:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"},"typeName":{"contractScope":null,"id":4135,"name":"ISAMB","nodeType":"UserDefinedTypeName","referencedDeclaration":5786,"src":"443:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"value":null,"visibility":"internal"},{"body":{"id":4165,"nodeType":"Block","src":"543:137:7","statements":[{"expression":{"argumentTypes":null,"id":4149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4145,"name":"factoryV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4132,"src":"553:9:7","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Factory_$5852","typeString":"contract IAstraV1Factory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4147,"name":"_factoryV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4140,"src":"581:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4146,"name":"IAstraV1Factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5852,"src":"565:15:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraV1Factory_$5852_$","typeString":"type(contract IAstraV1Factory)"}},"id":4148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"565:27:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Factory_$5852","typeString":"contract IAstraV1Factory"}},"src":"553:39:7","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Factory_$5852","typeString":"contract IAstraV1Factory"}},"id":4150,"nodeType":"ExpressionStatement","src":"553:39:7"},{"expression":{"argumentTypes":null,"id":4153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4151,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"602:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4152,"name":"_factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4138,"src":"612:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"602:18:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4154,"nodeType":"ExpressionStatement","src":"602:18:7"},{"expression":{"argumentTypes":null,"id":4163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4155,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"630:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4158,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4142,"src":"658:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4157,"name":"IAstraRouter01","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5594,"src":"643:14:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraRouter01_$5594_$","typeString":"type(contract IAstraRouter01)"}},"id":4159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"643:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":4160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"SAMB","nodeType":"MemberAccess","referencedDeclaration":5298,"src":"643:27:7","typeDescriptions":{"typeIdentifier":"t_function_external_pure$__$returns$_t_address_$","typeString":"function () pure external returns (address)"}},"id":4161,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"643:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4156,"name":"ISAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5786,"src":"637:5:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ISAMB_$5786_$","typeString":"type(contract ISAMB)"}},"id":4162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"637:36:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"src":"630:43:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":4164,"nodeType":"ExpressionStatement","src":"630:43:7"}]},"documentation":null,"id":4166,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4143,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4138,"mutability":"mutable","name":"_factory","nodeType":"VariableDeclaration","overrides":null,"scope":4166,"src":"482:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4137,"name":"address","nodeType":"ElementaryTypeName","src":"482:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4140,"mutability":"mutable","name":"_factoryV1","nodeType":"VariableDeclaration","overrides":null,"scope":4166,"src":"500:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4139,"name":"address","nodeType":"ElementaryTypeName","src":"500:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4142,"mutability":"mutable","name":"router","nodeType":"VariableDeclaration","overrides":null,"scope":4166,"src":"520:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4141,"name":"address","nodeType":"ElementaryTypeName","src":"520:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"481:54:7"},"returnParameters":{"id":4144,"nodeType":"ParameterList","parameters":[],"src":"543:0:7"},"scope":4496,"src":"470:210:7","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4169,"nodeType":"Block","src":"921:2:7","statements":[]},"documentation":null,"id":4170,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4167,"nodeType":"ParameterList","parameters":[],"src":"901:2:7"},"returnParameters":{"id":4168,"nodeType":"ParameterList","parameters":[],"src":"921:0:7"},"scope":4496,"src":"894:29:7","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[12],"body":{"id":4494,"nodeType":"Block","src":"1139:2523:7","statements":[{"assignments":[4186],"declarations":[{"constant":false,"id":4186,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":4494,"src":"1149:21:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":4184,"name":"address","nodeType":"ElementaryTypeName","src":"1149:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4185,"length":null,"nodeType":"ArrayTypeName","src":"1149:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"id":4192,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"32","id":4190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1187:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":4189,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1173:13:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":4187,"name":"address","nodeType":"ElementaryTypeName","src":"1177:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4188,"length":null,"nodeType":"ArrayTypeName","src":"1177:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":4191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1173:16:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1149:40:7"},{"assignments":[4194],"declarations":[{"constant":false,"id":4194,"mutability":"mutable","name":"amountToken","nodeType":"VariableDeclaration","overrides":null,"scope":4494,"src":"1199:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4193,"name":"uint","nodeType":"ElementaryTypeName","src":"1199:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4195,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"1199:16:7"},{"assignments":[4197],"declarations":[{"constant":false,"id":4197,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":4494,"src":"1225:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4196,"name":"uint","nodeType":"ElementaryTypeName","src":"1225:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4198,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"1225:14:7"},{"id":4285,"nodeType":"Block","src":"1249:619:7","statements":[{"assignments":[4200],"declarations":[{"constant":false,"id":4200,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","overrides":null,"scope":4285,"src":"1313:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4199,"name":"address","nodeType":"ElementaryTypeName","src":"1313:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":4207,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4202,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1341:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1341:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":4201,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"1330:10:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":4204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1330:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":4205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":246,"src":"1330:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4206,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1330:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1313:48:7"},{"assignments":[4209],"declarations":[{"constant":false,"id":4209,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","overrides":null,"scope":4285,"src":"1371:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4208,"name":"address","nodeType":"ElementaryTypeName","src":"1371:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":4216,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4211,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1399:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1399:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":4210,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"1388:10:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":4213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1388:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":4214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":251,"src":"1388:29:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4215,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1388:31:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1371:48:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4218,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1436:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1436:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4222,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"1471:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4223,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"1480:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4224,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"1488:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":4220,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"1450:12:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":4221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"1450:20:7","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":4225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1450:45:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1436:59:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4217,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1429:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1429:67:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4228,"nodeType":"ExpressionStatement","src":"1429:67:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4230,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"1561:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":4231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1572:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1561:12:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4233,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4176,"src":"1577:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":4234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1588:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1577:12:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1561:28:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4229,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1554:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1554:36:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4238,"nodeType":"ExpressionStatement","src":"1554:36:7"},{"expression":{"argumentTypes":null,"id":4248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4239,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"1635:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4241,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":4240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1640:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1635:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4242,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"1645:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":4243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1656:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1645:12:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":4246,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"1669:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1645:30:7","trueExpression":{"argumentTypes":null,"id":4245,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"1660:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1635:40:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4249,"nodeType":"ExpressionStatement","src":"1635:40:7"},{"expression":{"argumentTypes":null,"id":4259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4250,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"1685:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4252,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":4251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1690:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1685:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4253,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"1695:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":4254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1706:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1695:12:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":4257,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"1719:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1695:30:7","trueExpression":{"argumentTypes":null,"id":4256,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4209,"src":"1710:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1685:40:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4260,"nodeType":"ExpressionStatement","src":"1685:40:7"},{"expression":{"argumentTypes":null,"id":4271,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4261,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"1735:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4262,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"1749:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4265,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"1767:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}],"id":4264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1759:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4263,"name":"address","nodeType":"ElementaryTypeName","src":"1759:7:7","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1759:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1749:23:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":4269,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"1785:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1749:43:7","trueExpression":{"argumentTypes":null,"id":4268,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4176,"src":"1775:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1735:57:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4272,"nodeType":"ExpressionStatement","src":"1735:57:7"},{"expression":{"argumentTypes":null,"id":4283,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4273,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4197,"src":"1802:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4274,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"1814:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4277,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"1832:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}],"id":4276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1824:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4275,"name":"address","nodeType":"ElementaryTypeName","src":"1824:7:7","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1824:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1814:23:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":4281,"name":"amount1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4176,"src":"1850:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1814:43:7","trueExpression":{"argumentTypes":null,"id":4280,"name":"amount0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4174,"src":"1840:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1802:55:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4284,"nodeType":"ExpressionStatement","src":"1802:55:7"}]},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4287,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"1885:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4289,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":4288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1890:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1885:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4292,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"1904:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}],"id":4291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1896:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4290,"name":"address","nodeType":"ElementaryTypeName","src":"1896:7:7","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1896:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1885:24:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4295,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"1913:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4297,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":4296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1918:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1913:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4300,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"1932:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}],"id":4299,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1924:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4298,"name":"address","nodeType":"ElementaryTypeName","src":"1924:7:7","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1924:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1913:24:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1885:52:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4286,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1878:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1878:60:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4305,"nodeType":"ExpressionStatement","src":"1878:60:7"},{"assignments":[4307],"declarations":[{"constant":false,"id":4307,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":4494,"src":"1996:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"},"typeName":{"contractScope":null,"id":4306,"name":"IERC20","nodeType":"UserDefinedTypeName","referencedDeclaration":5766,"src":"1996:6:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}},"value":null,"visibility":"internal"}],"id":4325,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4309,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"2018:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4311,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":4310,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2023:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2018:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4314,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"2037:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}],"id":4313,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2029:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4312,"name":"address","nodeType":"ElementaryTypeName","src":"2029:7:7","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2029:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2018:24:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4320,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"2055:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4322,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":4321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2060:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2055:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2018:44:7","trueExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4317,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"2045:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":4319,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":4318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2050:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2045:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4308,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5766,"src":"2011:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$5766_$","typeString":"type(contract IERC20)"}},"id":4324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2011:52:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}},"nodeType":"VariableDeclarationStatement","src":"1996:67:7"},{"assignments":[4327],"declarations":[{"constant":false,"id":4327,"mutability":"mutable","name":"exchangeV1","nodeType":"VariableDeclaration","overrides":null,"scope":4494,"src":"2073:27:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"},"typeName":{"contractScope":null,"id":4326,"name":"IAstraV1Exchange","nodeType":"UserDefinedTypeName","referencedDeclaration":5842,"src":"2073:16:7","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"}},"value":null,"visibility":"internal"}],"id":4337,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4333,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"2150:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}],"id":4332,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2142:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4331,"name":"address","nodeType":"ElementaryTypeName","src":"2142:7:7","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4334,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2142:14:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":4329,"name":"factoryV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4132,"src":"2120:9:7","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Factory_$5852","typeString":"contract IAstraV1Factory"}},"id":4330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getExchange","nodeType":"MemberAccess","referencedDeclaration":5851,"src":"2120:21:7","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_address_$","typeString":"function (address) view external returns (address)"}},"id":4335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2120:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4328,"name":"IAstraV1Exchange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5842,"src":"2103:16:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraV1Exchange_$5842_$","typeString":"type(contract IAstraV1Exchange)"}},"id":4336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2103:55:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"}},"nodeType":"VariableDeclarationStatement","src":"2073:85:7"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4338,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"2192:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":4339,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2206:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2192:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4492,"nodeType":"Block","src":"2988:668:7","statements":[{"assignments":[4427],"declarations":[{"constant":false,"id":4427,"mutability":"mutable","name":"minTokens","nodeType":"VariableDeclaration","overrides":null,"scope":4492,"src":"3003:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4426,"name":"uint","nodeType":"ElementaryTypeName","src":"3003:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4435,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4430,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"3032:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"id":4432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3039:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4431,"name":"uint","nodeType":"ElementaryTypeName","src":"3039:4:7","typeDescriptions":{"typeIdentifier":null,"typeString":null}}}],"id":4433,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3038:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"argumentTypes":null,"id":4428,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3021:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4429,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3021:10:7","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":4434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3021:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3002:43:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4439,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4197,"src":"3123:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4436,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"3109:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":4438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"withdraw","nodeType":"MemberAccess","referencedDeclaration":5785,"src":"3109:13:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":4440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3109:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4441,"nodeType":"ExpressionStatement","src":"3109:24:7"},{"assignments":[4443],"declarations":[{"constant":false,"id":4443,"mutability":"mutable","name":"amountReceived","nodeType":"VariableDeclaration","overrides":null,"scope":4492,"src":"3147:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4442,"name":"uint","nodeType":"ElementaryTypeName","src":"3147:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4455,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4448,"name":"minTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4427,"src":"3218:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4452,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3234:2:7","subExpression":{"argumentTypes":null,"hexValue":"31","id":4451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3235:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":4450,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3229:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4449,"name":"uint","nodeType":"ElementaryTypeName","src":"3229:4:7","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3229:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4444,"name":"exchangeV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4327,"src":"3169:10:7","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"}},"id":4445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"AMBToTokenSwapInput","nodeType":"MemberAccess","referencedDeclaration":5841,"src":"3169:30:7","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) payable external returns (uint256)"}},"id":4447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"argumentTypes":null,"id":4446,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4197,"src":"3207:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3169:48:7","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_uint256_$returns$_t_uint256_$value","typeString":"function (uint256,uint256) payable external returns (uint256)"}},"id":4454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3169:69:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3147:91:7"},{"assignments":[4457],"declarations":[{"constant":false,"id":4457,"mutability":"mutable","name":"amountRequired","nodeType":"VariableDeclaration","overrides":null,"scope":4492,"src":"3252:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4456,"name":"uint","nodeType":"ElementaryTypeName","src":"3252:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4466,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4460,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"3300:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4461,"name":"amountAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4197,"src":"3309:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":4462,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"3320:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"expression":{"argumentTypes":null,"id":4458,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"3274:12:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":4459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsIn","nodeType":"MemberAccess","referencedDeclaration":6323,"src":"3274:25:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":4463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3274:51:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":4465,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":4464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3326:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3274:54:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3252:76:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4468,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4443,"src":"3349:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":4469,"name":"amountRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"3366:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3349:31:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4467,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3342:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3342:39:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4472,"nodeType":"ExpressionStatement","src":"3342:39:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4476,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3485:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3485:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":4478,"name":"amountRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"3497:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4474,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"3470:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}},"id":4475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":5754,"src":"3470:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":4479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3470:42:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4473,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3463:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3463:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4481,"nodeType":"ExpressionStatement","src":"3463:50:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4485,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"3577:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4486,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4443,"src":"3585:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":4487,"name":"amountRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4457,"src":"3602:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3585:31:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4483,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"3562:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}},"id":4484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":5754,"src":"3562:14:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":4489,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3562:55:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4482,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3555:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3555:63:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4491,"nodeType":"ExpressionStatement","src":"3555:63:7"}]},"id":4493,"nodeType":"IfStatement","src":"2188:1468:7","trueBody":{"id":4425,"nodeType":"Block","src":"2209:773:7","statements":[{"assignments":[4342],"declarations":[{"constant":false,"id":4342,"mutability":"mutable","name":"minAMB","nodeType":"VariableDeclaration","overrides":null,"scope":4425,"src":"2224:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4341,"name":"uint","nodeType":"ElementaryTypeName","src":"2224:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4350,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4345,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4178,"src":"2250:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"id":4347,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2257:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4346,"name":"uint","nodeType":"ElementaryTypeName","src":"2257:4:7","typeDescriptions":{"typeIdentifier":null,"typeString":null}}}],"id":4348,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2256:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"expression":{"argumentTypes":null,"id":4343,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2239:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4344,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2239:10:7","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":4349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2239:24:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2223:40:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4356,"name":"exchangeV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4327,"src":"2349:10:7","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"}],"id":4355,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2341:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4354,"name":"address","nodeType":"ElementaryTypeName","src":"2341:7:7","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4357,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2341:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4358,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"2362:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4351,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4307,"src":"2327:5:7","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$5766","typeString":"contract IERC20"}},"id":4353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":5745,"src":"2327:13:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":4359,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2327:47:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4360,"nodeType":"ExpressionStatement","src":"2327:47:7"},{"assignments":[4362],"declarations":[{"constant":false,"id":4362,"mutability":"mutable","name":"amountReceived","nodeType":"VariableDeclaration","overrides":null,"scope":4425,"src":"2388:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4361,"name":"uint","nodeType":"ElementaryTypeName","src":"2388:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4373,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4365,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"2441:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":4366,"name":"minAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4342,"src":"2454:6:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2467:2:7","subExpression":{"argumentTypes":null,"hexValue":"31","id":4369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2468:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":4368,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2462:4:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4367,"name":"uint","nodeType":"ElementaryTypeName","src":"2462:4:7","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2462:8:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4363,"name":"exchangeV1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4327,"src":"2410:10:7","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraV1Exchange_$5842","typeString":"contract IAstraV1Exchange"}},"id":4364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"tokenToAMBSwapInput","nodeType":"MemberAccess","referencedDeclaration":5832,"src":"2410:30:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) external returns (uint256)"}},"id":4372,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2410:61:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2388:83:7"},{"assignments":[4375],"declarations":[{"constant":false,"id":4375,"mutability":"mutable","name":"amountRequired","nodeType":"VariableDeclaration","overrides":null,"scope":4425,"src":"2485:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4374,"name":"uint","nodeType":"ElementaryTypeName","src":"2485:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4384,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4378,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4134,"src":"2533:7:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4379,"name":"amountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"2542:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":4380,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4186,"src":"2555:4:7","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"expression":{"argumentTypes":null,"id":4376,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"2507:12:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":4377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountsIn","nodeType":"MemberAccess","referencedDeclaration":6323,"src":"2507:25:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (address,uint256,address[] memory) view returns (uint256[] memory)"}},"id":4381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2507:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":4383,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":4382,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2561:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2507:56:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2485:78:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4386,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"2584:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":4387,"name":"amountRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4375,"src":"2601:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2584:31:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4385,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2577:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2577:39:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4390,"nodeType":"ExpressionStatement","src":"2577:39:7"},{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4391,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"2695:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":4393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"deposit","nodeType":"MemberAccess","referencedDeclaration":5771,"src":"2695:12:7","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$","typeString":"function () payable external"}},"id":4395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"argumentTypes":null,"id":4394,"name":"amountRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4375,"src":"2715:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2695:35:7","typeDescriptions":{"typeIdentifier":"t_function_external_payable$__$returns$__$value","typeString":"function () payable external"}},"id":4396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2695:37:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4397,"nodeType":"ExpressionStatement","src":"2695:37:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4401,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2767:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":4402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2767:10:7","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":4403,"name":"amountRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4375,"src":"2779:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4399,"name":"SAMB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4136,"src":"2753:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_ISAMB_$5786","typeString":"contract ISAMB"}},"id":4400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":5780,"src":"2753:13:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":4404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2753:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4398,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2746:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2746:49:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4406,"nodeType":"ExpressionStatement","src":"2746:49:7"},{"assignments":[4408,null],"declarations":[{"constant":false,"id":4408,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":4425,"src":"2836:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4407,"name":"bool","nodeType":"ElementaryTypeName","src":"2836:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},null],"id":4420,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":4417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2915:1:7","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":4416,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2905:9:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4415,"name":"bytes","nodeType":"ElementaryTypeName","src":"2909:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4418,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2905:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4409,"name":"sender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4172,"src":"2853:6:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2853:11:7","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":4414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4413,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4411,"name":"amountReceived","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"2872:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":4412,"name":"amountRequired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4375,"src":"2889:14:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2872:31:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2853:51:7","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":4419,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2853:65:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2835:83:7"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4422,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4408,"src":"2963:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":4421,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2956:6:7","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":4423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2956:15:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4424,"nodeType":"ExpressionStatement","src":"2956:15:7"}]}}]},"documentation":null,"functionSelector":"ee906f6b","id":4495,"implemented":true,"kind":"function","modifiers":[],"name":"astraCall","nodeType":"FunctionDefinition","overrides":{"id":4180,"nodeType":"OverrideSpecifier","overrides":[],"src":"1130:8:7"},"parameters":{"id":4179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4172,"mutability":"mutable","name":"sender","nodeType":"VariableDeclaration","overrides":null,"scope":4495,"src":"1056:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4171,"name":"address","nodeType":"ElementaryTypeName","src":"1056:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4174,"mutability":"mutable","name":"amount0","nodeType":"VariableDeclaration","overrides":null,"scope":4495,"src":"1072:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4173,"name":"uint","nodeType":"ElementaryTypeName","src":"1072:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4176,"mutability":"mutable","name":"amount1","nodeType":"VariableDeclaration","overrides":null,"scope":4495,"src":"1086:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4175,"name":"uint","nodeType":"ElementaryTypeName","src":"1086:4:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4178,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","overrides":null,"scope":4495,"src":"1100:19:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":4177,"name":"bytes","nodeType":"ElementaryTypeName","src":"1100:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"src":"1055:65:7"},"returnParameters":{"id":4181,"nodeType":"ParameterList","parameters":[],"src":"1139:0:7"},"scope":4496,"src":"1037:2625:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":4497,"src":"323:3341:7"}],"src":"0:3665:7"},"id":7},"contracts/periphery/examples/ExampleOracleSimple.sol":{"ast":{"absolutePath":"contracts/periphery/examples/ExampleOracleSimple.sol","exportedSymbols":{"ExampleOracleSimple":[4714]},"id":4715,"nodeType":"SourceUnit","nodes":[{"id":4498,"literals":["solidity","=","0.6",".6"],"nodeType":"PragmaDirective","src":"0:23:8"},{"absolutePath":"contracts/core/interfaces/IAstraFactory.sol","file":"../../core/interfaces/IAstraFactory.sol","id":4499,"nodeType":"ImportDirective","scope":4715,"sourceUnit":77,"src":"25:49:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/core/interfaces/IAstraPair.sol","file":"../../core/interfaces/IAstraPair.sol","id":4500,"nodeType":"ImportDirective","scope":4715,"sourceUnit":319,"src":"75:46:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/FixedPoint.sol","file":"../libraries/FixedPoint.sol","id":4501,"nodeType":"ImportDirective","scope":4715,"sourceUnit":8008,"src":"122:37:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/AstraOracleLibrary.sol","file":"../libraries/AstraOracleLibrary.sol","id":4502,"nodeType":"ImportDirective","scope":4715,"sourceUnit":6898,"src":"161:45:8","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/AstraLibrary.sol","file":"../libraries/AstraLibrary.sol","id":4503,"nodeType":"ImportDirective","scope":4715,"sourceUnit":6325,"src":"207:39:8","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":4714,"linearizedBaseContracts":[4714],"name":"ExampleOracleSimple","nodeType":"ContractDefinition","nodes":[{"id":4505,"libraryName":{"contractScope":null,"id":4504,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":8007,"src":"498:10:8","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$8007","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"492:23:8","typeName":null},{"constant":true,"functionSelector":"b4d1d795","id":4508,"mutability":"constant","name":"PERIOD","nodeType":"VariableDeclaration","overrides":null,"scope":4714,"src":"521:38:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4506,"name":"uint","nodeType":"ElementaryTypeName","src":"521:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"3234","id":4507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"551:8:8","subdenomination":"hours","typeDescriptions":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"value":"24"},"visibility":"public"},{"constant":false,"id":4510,"mutability":"immutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":4714,"src":"566:25:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"},"typeName":{"contractScope":null,"id":4509,"name":"IAstraPair","nodeType":"UserDefinedTypeName","referencedDeclaration":318,"src":"566:10:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"value":null,"visibility":"internal"},{"constant":false,"functionSelector":"0dfe1681","id":4512,"mutability":"immutable","name":"token0","nodeType":"VariableDeclaration","overrides":null,"scope":4714,"src":"597:31:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4511,"name":"address","nodeType":"ElementaryTypeName","src":"597:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"d21220a7","id":4514,"mutability":"immutable","name":"token1","nodeType":"VariableDeclaration","overrides":null,"scope":4714,"src":"634:31:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4513,"name":"address","nodeType":"ElementaryTypeName","src":"634:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"5909c0d5","id":4516,"mutability":"mutable","name":"price0CumulativeLast","nodeType":"VariableDeclaration","overrides":null,"scope":4714,"src":"672:35:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4515,"name":"uint","nodeType":"ElementaryTypeName","src":"672:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"5a3d5493","id":4518,"mutability":"mutable","name":"price1CumulativeLast","nodeType":"VariableDeclaration","overrides":null,"scope":4714,"src":"713:35:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4517,"name":"uint","nodeType":"ElementaryTypeName","src":"713:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"c5700a02","id":4520,"mutability":"mutable","name":"blockTimestampLast","nodeType":"VariableDeclaration","overrides":null,"scope":4714,"src":"754:33:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4519,"name":"uint32","nodeType":"ElementaryTypeName","src":"754:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"a6bb4539","id":4522,"mutability":"mutable","name":"price0Average","nodeType":"VariableDeclaration","overrides":null,"scope":4714,"src":"793:41:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":4521,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"793:20:8","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"5e6aaf2c","id":4524,"mutability":"mutable","name":"price1Average","nodeType":"VariableDeclaration","overrides":null,"scope":4714,"src":"840:41:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":4523,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"840:20:8","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"public"},{"body":{"id":4598,"nodeType":"Block","src":"956:663:8","statements":[{"assignments":[4534],"declarations":[{"constant":false,"id":4534,"mutability":"mutable","name":"_pair","nodeType":"VariableDeclaration","overrides":null,"scope":4598,"src":"966:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"},"typeName":{"contractScope":null,"id":4533,"name":"IAstraPair","nodeType":"UserDefinedTypeName","referencedDeclaration":318,"src":"966:10:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"value":null,"visibility":"internal"}],"id":4543,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4538,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4526,"src":"1017:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4539,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4528,"src":"1026:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4540,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4530,"src":"1034:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":4536,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"996:12:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":4537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"996:20:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":4541,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"996:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4535,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"985:10:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":4542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"985:57:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"nodeType":"VariableDeclarationStatement","src":"966:76:8"},{"expression":{"argumentTypes":null,"id":4546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4544,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4510,"src":"1052:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4545,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4534,"src":"1059:5:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"src":"1052:12:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":4547,"nodeType":"ExpressionStatement","src":"1052:12:8"},{"expression":{"argumentTypes":null,"id":4552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4548,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4512,"src":"1074:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":4549,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4534,"src":"1083:5:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":4550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token0","nodeType":"MemberAccess","referencedDeclaration":246,"src":"1083:12:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1083:14:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1074:23:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4553,"nodeType":"ExpressionStatement","src":"1074:23:8"},{"expression":{"argumentTypes":null,"id":4558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4554,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"1107:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":4555,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4534,"src":"1116:5:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":4556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"token1","nodeType":"MemberAccess","referencedDeclaration":251,"src":"1116:12:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":4557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1116:14:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1107:23:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4559,"nodeType":"ExpressionStatement","src":"1107:23:8"},{"expression":{"argumentTypes":null,"id":4564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4560,"name":"price0CumulativeLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4516,"src":"1140:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":4561,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4534,"src":"1163:5:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":4562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"price0CumulativeLast","nodeType":"MemberAccess","referencedDeclaration":265,"src":"1163:26:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":4563,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1163:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1140:51:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4565,"nodeType":"ExpressionStatement","src":"1140:51:8"},{"expression":{"argumentTypes":null,"id":4570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4566,"name":"price1CumulativeLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4518,"src":"1254:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":4567,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4534,"src":"1277:5:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":4568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"price1CumulativeLast","nodeType":"MemberAccess","referencedDeclaration":270,"src":"1277:26:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":4569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1277:28:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1254:51:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4571,"nodeType":"ExpressionStatement","src":"1254:51:8"},{"assignments":[4573],"declarations":[{"constant":false,"id":4573,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","overrides":null,"scope":4598,"src":"1368:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":4572,"name":"uint112","nodeType":"ElementaryTypeName","src":"1368:7:8","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"}],"id":4574,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"1368:16:8"},{"assignments":[4576],"declarations":[{"constant":false,"id":4576,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","overrides":null,"scope":4598,"src":"1394:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":4575,"name":"uint112","nodeType":"ElementaryTypeName","src":"1394:7:8","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"}],"id":4577,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"1394:16:8"},{"expression":{"argumentTypes":null,"id":4585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":4578,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"1421:8:8","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},{"argumentTypes":null,"id":4579,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4576,"src":"1431:8:8","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},{"argumentTypes":null,"id":4580,"name":"blockTimestampLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4520,"src":"1441:18:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"id":4581,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1420:40:8","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"tuple(uint112,uint112,uint32)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":4582,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4534,"src":"1463:5:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":4583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":260,"src":"1463:17:8","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"function () view external returns (uint112,uint112,uint32)"}},"id":4584,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1463:19:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"tuple(uint112,uint112,uint32)"}},"src":"1420:62:8","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4586,"nodeType":"ExpressionStatement","src":"1420:62:8"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":4590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4588,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4573,"src":"1500:8:8","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":4589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1512:1:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1500:13:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint112","typeString":"uint112"},"id":4593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4591,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4576,"src":"1517:8:8","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":4592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1529:1:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1517:13:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1500:30:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4578616d706c654f7261636c6553696d706c653a204e4f5f5245534552564553","id":4595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1532:34:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5720adcb94cda19986281480d9844baedfdd42c24b3723a822a393a0fc529ea4","typeString":"literal_string \"ExampleOracleSimple: NO_RESERVES\""},"value":"ExampleOracleSimple: NO_RESERVES"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5720adcb94cda19986281480d9844baedfdd42c24b3723a822a393a0fc529ea4","typeString":"literal_string \"ExampleOracleSimple: NO_RESERVES\""}],"id":4587,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1492:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1492:75:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4597,"nodeType":"ExpressionStatement","src":"1492:75:8"}]},"documentation":null,"id":4599,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4526,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","overrides":null,"scope":4599,"src":"900:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4525,"name":"address","nodeType":"ElementaryTypeName","src":"900:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4528,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":4599,"src":"917:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4527,"name":"address","nodeType":"ElementaryTypeName","src":"917:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4530,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":4599,"src":"933:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4529,"name":"address","nodeType":"ElementaryTypeName","src":"933:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"899:49:8"},"returnParameters":{"id":4532,"nodeType":"ParameterList","parameters":[],"src":"956:0:8"},"scope":4714,"src":"888:731:8","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4671,"nodeType":"Block","src":"1652:957:8","statements":[{"assignments":[4603,4605,4607],"declarations":[{"constant":false,"id":4603,"mutability":"mutable","name":"price0Cumulative","nodeType":"VariableDeclaration","overrides":null,"scope":4671,"src":"1663:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4602,"name":"uint","nodeType":"ElementaryTypeName","src":"1663:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4605,"mutability":"mutable","name":"price1Cumulative","nodeType":"VariableDeclaration","overrides":null,"scope":4671,"src":"1686:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4604,"name":"uint","nodeType":"ElementaryTypeName","src":"1686:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4607,"mutability":"mutable","name":"blockTimestamp","nodeType":"VariableDeclaration","overrides":null,"scope":4671,"src":"1709:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4606,"name":"uint32","nodeType":"ElementaryTypeName","src":"1709:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":4615,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4612,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4510,"src":"1797:4:8","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}],"id":4611,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1789:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":4610,"name":"address","nodeType":"ElementaryTypeName","src":"1789:7:8","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1789:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":4608,"name":"AstraOracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6897,"src":"1746:18:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraOracleLibrary_$6897_$","typeString":"type(library AstraOracleLibrary)"}},"id":4609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currentCumulativePrices","nodeType":"MemberAccess","referencedDeclaration":6896,"src":"1746:42:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint32_$","typeString":"function (address) view returns (uint256,uint256,uint32)"}},"id":4614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1746:57:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint32_$","typeString":"tuple(uint256,uint256,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"1662:141:8"},{"assignments":[4617],"declarations":[{"constant":false,"id":4617,"mutability":"mutable","name":"timeElapsed","nodeType":"VariableDeclaration","overrides":null,"scope":4671,"src":"1813:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":4616,"name":"uint32","nodeType":"ElementaryTypeName","src":"1813:6:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":4621,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":4620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4618,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4607,"src":"1834:14:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":4619,"name":"blockTimestampLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4520,"src":"1851:18:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1834:35:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"1813:56:8"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4623,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4617,"src":"1992:11:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":4624,"name":"PERIOD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4508,"src":"2007:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1992:21:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4578616d706c654f7261636c6553696d706c653a20504552494f445f4e4f545f454c4150534544","id":4626,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2015:41:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_a1aff5acc9ffd9e80f19a58282d38e76d2d603685c69fc94919da1d1b8a042bb","typeString":"literal_string \"ExampleOracleSimple: PERIOD_NOT_ELAPSED\""},"value":"ExampleOracleSimple: PERIOD_NOT_ELAPSED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a1aff5acc9ffd9e80f19a58282d38e76d2d603685c69fc94919da1d1b8a042bb","typeString":"literal_string \"ExampleOracleSimple: PERIOD_NOT_ELAPSED\""}],"id":4622,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1984:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1984:73:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4628,"nodeType":"ExpressionStatement","src":"1984:73:8"},{"expression":{"argumentTypes":null,"id":4642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4629,"name":"price0Average","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4522,"src":"2244:13:8","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage","typeString":"struct FixedPoint.uq112x112 storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4634,"name":"price0Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4603,"src":"2290:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":4635,"name":"price0CumulativeLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4516,"src":"2309:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2290:39:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4637,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2289:41:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":4638,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4617,"src":"2333:11:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2289:55:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2281:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":4632,"name":"uint224","nodeType":"ElementaryTypeName","src":"2281:7:8","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2281:64:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"expression":{"argumentTypes":null,"id":4630,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8007,"src":"2260:10:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$8007_$","typeString":"type(library FixedPoint)"}},"id":4631,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"uq112x112","nodeType":"MemberAccess","referencedDeclaration":7386,"src":"2260:20:8","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":4641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2260:86:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"src":"2244:102:8","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage","typeString":"struct FixedPoint.uq112x112 storage ref"}},"id":4643,"nodeType":"ExpressionStatement","src":"2244:102:8"},{"expression":{"argumentTypes":null,"id":4657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4644,"name":"price1Average","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4524,"src":"2356:13:8","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage","typeString":"struct FixedPoint.uq112x112 storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4649,"name":"price1Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4605,"src":"2402:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":4650,"name":"price1CumulativeLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4518,"src":"2421:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2402:39:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4652,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2401:41:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":4653,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4617,"src":"2445:11:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2401:55:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4648,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2393:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":4647,"name":"uint224","nodeType":"ElementaryTypeName","src":"2393:7:8","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2393:64:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"expression":{"argumentTypes":null,"id":4645,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8007,"src":"2372:10:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$8007_$","typeString":"type(library FixedPoint)"}},"id":4646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"uq112x112","nodeType":"MemberAccess","referencedDeclaration":7386,"src":"2372:20:8","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":4656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2372:86:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"src":"2356:102:8","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage","typeString":"struct FixedPoint.uq112x112 storage ref"}},"id":4658,"nodeType":"ExpressionStatement","src":"2356:102:8"},{"expression":{"argumentTypes":null,"id":4661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4659,"name":"price0CumulativeLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4516,"src":"2469:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4660,"name":"price0Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4603,"src":"2492:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2469:39:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4662,"nodeType":"ExpressionStatement","src":"2469:39:8"},{"expression":{"argumentTypes":null,"id":4665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4663,"name":"price1CumulativeLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4518,"src":"2518:20:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4664,"name":"price1Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4605,"src":"2541:16:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2518:39:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4666,"nodeType":"ExpressionStatement","src":"2518:39:8"},{"expression":{"argumentTypes":null,"id":4669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4667,"name":"blockTimestampLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4520,"src":"2567:18:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4668,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4607,"src":"2588:14:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"2567:35:8","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":4670,"nodeType":"ExpressionStatement","src":"2567:35:8"}]},"documentation":null,"functionSelector":"a2e62045","id":4672,"implemented":true,"kind":"function","modifiers":[],"name":"update","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4600,"nodeType":"ParameterList","parameters":[],"src":"1640:2:8"},"returnParameters":{"id":4601,"nodeType":"ParameterList","parameters":[],"src":"1652:0:8"},"scope":4714,"src":"1625:984:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4712,"nodeType":"Block","src":"2802:271:8","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4681,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4674,"src":"2816:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":4682,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4512,"src":"2825:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2816:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":4710,"nodeType":"Block","src":"2915:152:8","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":4697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4695,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4674,"src":"2937:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":4696,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4514,"src":"2946:6:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2937:15:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4578616d706c654f7261636c6553696d706c653a20494e56414c49445f544f4b454e","id":4698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2954:36:8","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_7eac5a25019cfa58bee0665216bcc5877b01e182a14f1df6cf76155e4b2d9900","typeString":"literal_string \"ExampleOracleSimple: INVALID_TOKEN\""},"value":"ExampleOracleSimple: INVALID_TOKEN"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7eac5a25019cfa58bee0665216bcc5877b01e182a14f1df6cf76155e4b2d9900","typeString":"literal_string \"ExampleOracleSimple: INVALID_TOKEN\""}],"id":4694,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2929:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2929:62:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4700,"nodeType":"ExpressionStatement","src":"2929:62:8"},{"expression":{"argumentTypes":null,"id":4708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4701,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4679,"src":"3005:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4704,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4676,"src":"3035:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4702,"name":"price1Average","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4524,"src":"3017:13:8","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage","typeString":"struct FixedPoint.uq112x112 storage ref"}},"id":4703,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":7505,"src":"3017:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq112x112_$7386_memory_ptr_$_t_uint256_$returns$_t_struct$_uq144x112_$7389_memory_ptr_$bound_to$_t_struct$_uq112x112_$7386_memory_ptr_$","typeString":"function (struct FixedPoint.uq112x112 memory,uint256) pure returns (struct FixedPoint.uq144x112 memory)"}},"id":4705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3017:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$7389_memory_ptr","typeString":"struct FixedPoint.uq144x112 memory"}},"id":4706,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"decode144","nodeType":"MemberAccess","referencedDeclaration":7467,"src":"3017:37:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq144x112_$7389_memory_ptr_$returns$_t_uint144_$bound_to$_t_struct$_uq144x112_$7389_memory_ptr_$","typeString":"function (struct FixedPoint.uq144x112 memory) pure returns (uint144)"}},"id":4707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3017:39:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"3005:51:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4709,"nodeType":"ExpressionStatement","src":"3005:51:8"}]},"id":4711,"nodeType":"IfStatement","src":"2812:255:8","trueBody":{"id":4693,"nodeType":"Block","src":"2833:76:8","statements":[{"expression":{"argumentTypes":null,"id":4691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4684,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4679,"src":"2847:9:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4687,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4676,"src":"2877:8:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4685,"name":"price0Average","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4522,"src":"2859:13:8","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage","typeString":"struct FixedPoint.uq112x112 storage ref"}},"id":4686,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":7505,"src":"2859:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq112x112_$7386_memory_ptr_$_t_uint256_$returns$_t_struct$_uq144x112_$7389_memory_ptr_$bound_to$_t_struct$_uq112x112_$7386_memory_ptr_$","typeString":"function (struct FixedPoint.uq112x112 memory,uint256) pure returns (struct FixedPoint.uq144x112 memory)"}},"id":4688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2859:27:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$7389_memory_ptr","typeString":"struct FixedPoint.uq144x112 memory"}},"id":4689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"decode144","nodeType":"MemberAccess","referencedDeclaration":7467,"src":"2859:37:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq144x112_$7389_memory_ptr_$returns$_t_uint144_$bound_to$_t_struct$_uq144x112_$7389_memory_ptr_$","typeString":"function (struct FixedPoint.uq144x112 memory) pure returns (uint144)"}},"id":4690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2859:39:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"2847:51:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4692,"nodeType":"ExpressionStatement","src":"2847:51:8"}]}}]},"documentation":null,"functionSelector":"3ddac953","id":4713,"implemented":true,"kind":"function","modifiers":[],"name":"consult","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4674,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":4713,"src":"2733:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4673,"name":"address","nodeType":"ElementaryTypeName","src":"2733:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4676,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":4713,"src":"2748:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4675,"name":"uint","nodeType":"ElementaryTypeName","src":"2748:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2732:30:8"},"returnParameters":{"id":4680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4679,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":4713,"src":"2786:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4678,"name":"uint","nodeType":"ElementaryTypeName","src":"2786:4:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2785:16:8"},"scope":4714,"src":"2716:357:8","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":4715,"src":"457:2618:8"}],"src":"0:3076:8"},"id":8},"contracts/periphery/examples/ExampleSlidingWindowOracle.sol":{"ast":{"absolutePath":"contracts/periphery/examples/ExampleSlidingWindowOracle.sol","exportedSymbols":{"ExampleSlidingWindowOracle":[5070]},"id":5071,"nodeType":"SourceUnit","nodes":[{"id":4716,"literals":["solidity","=","0.6",".6"],"nodeType":"PragmaDirective","src":"0:23:9"},{"absolutePath":"contracts/core/interfaces/IAstraFactory.sol","file":"../../core/interfaces/IAstraFactory.sol","id":4717,"nodeType":"ImportDirective","scope":5071,"sourceUnit":77,"src":"25:49:9","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/core/interfaces/IAstraPair.sol","file":"../../core/interfaces/IAstraPair.sol","id":4718,"nodeType":"ImportDirective","scope":5071,"sourceUnit":319,"src":"75:46:9","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/FixedPoint.sol","file":"../libraries/FixedPoint.sol","id":4719,"nodeType":"ImportDirective","scope":5071,"sourceUnit":8008,"src":"123:37:9","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/SafeMath.sol","file":"../libraries/SafeMath.sol","id":4720,"nodeType":"ImportDirective","scope":5071,"sourceUnit":8304,"src":"161:35:9","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/AstraLibrary.sol","file":"../libraries/AstraLibrary.sol","id":4721,"nodeType":"ImportDirective","scope":5071,"sourceUnit":6325,"src":"197:39:9","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/AstraOracleLibrary.sol","file":"../libraries/AstraOracleLibrary.sol","id":4722,"nodeType":"ImportDirective","scope":5071,"sourceUnit":6898,"src":"237:45:9","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":5070,"linearizedBaseContracts":[5070],"name":"ExampleSlidingWindowOracle","nodeType":"ContractDefinition","nodes":[{"id":4724,"libraryName":{"contractScope":null,"id":4723,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":8007,"src":"684:10:9","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$8007","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"678:23:9","typeName":null},{"id":4727,"libraryName":{"contractScope":null,"id":4725,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":8303,"src":"712:8:9","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$8303","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"706:24:9","typeName":{"id":4726,"name":"uint","nodeType":"ElementaryTypeName","src":"725:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"canonicalName":"ExampleSlidingWindowOracle.Observation","id":4734,"members":[{"constant":false,"id":4729,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","overrides":null,"scope":4734,"src":"765:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4728,"name":"uint","nodeType":"ElementaryTypeName","src":"765:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4731,"mutability":"mutable","name":"price0Cumulative","nodeType":"VariableDeclaration","overrides":null,"scope":4734,"src":"789:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4730,"name":"uint","nodeType":"ElementaryTypeName","src":"789:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4733,"mutability":"mutable","name":"price1Cumulative","nodeType":"VariableDeclaration","overrides":null,"scope":4734,"src":"820:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4732,"name":"uint","nodeType":"ElementaryTypeName","src":"820:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"Observation","nodeType":"StructDefinition","scope":5070,"src":"736:112:9","visibility":"public"},{"constant":false,"functionSelector":"c45a0155","id":4736,"mutability":"immutable","name":"factory","nodeType":"VariableDeclaration","overrides":null,"scope":5070,"src":"854:32:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4735,"name":"address","nodeType":"ElementaryTypeName","src":"854:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"8a14117a","id":4738,"mutability":"immutable","name":"windowSize","nodeType":"VariableDeclaration","overrides":null,"scope":5070,"src":"990:32:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4737,"name":"uint","nodeType":"ElementaryTypeName","src":"990:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"556f0dc7","id":4740,"mutability":"immutable","name":"granularity","nodeType":"VariableDeclaration","overrides":null,"scope":5070,"src":"1575:34:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4739,"name":"uint8","nodeType":"ElementaryTypeName","src":"1575:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"e4463eb2","id":4742,"mutability":"immutable","name":"periodSize","nodeType":"VariableDeclaration","overrides":null,"scope":5070,"src":"1726:32:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4741,"name":"uint","nodeType":"ElementaryTypeName","src":"1726:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"bfcc8e42","id":4747,"mutability":"mutable","name":"pairObservations","nodeType":"VariableDeclaration","overrides":null,"scope":5070,"src":"1843:57:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_Observation_$4734_storage_$dyn_storage_$","typeString":"mapping(address => struct ExampleSlidingWindowOracle.Observation[])"},"typeName":{"id":4746,"keyType":{"id":4743,"name":"address","nodeType":"ElementaryTypeName","src":"1851:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1843:33:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_Observation_$4734_storage_$dyn_storage_$","typeString":"mapping(address => struct ExampleSlidingWindowOracle.Observation[])"},"valueType":{"baseType":{"contractScope":null,"id":4744,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4734,"src":"1862:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation"}},"id":4745,"length":null,"nodeType":"ArrayTypeName","src":"1862:13:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4734_storage_$dyn_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation[]"}}},"value":null,"visibility":"public"},{"body":{"id":4789,"nodeType":"Block","src":"1982:352:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4757,"name":"granularity_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4753,"src":"2000:12:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"31","id":4758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2015:1:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2000:16:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"536c6964696e6757696e646f774f7261636c653a204752414e554c4152495459","id":4760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2018:34:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_4475cb61de8f40ee5fa28e004a27a375037aa82af6dab1e7a7b1e55ef8e63c7f","typeString":"literal_string \"SlidingWindowOracle: GRANULARITY\""},"value":"SlidingWindowOracle: GRANULARITY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4475cb61de8f40ee5fa28e004a27a375037aa82af6dab1e7a7b1e55ef8e63c7f","typeString":"literal_string \"SlidingWindowOracle: GRANULARITY\""}],"id":4756,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1992:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1992:61:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4762,"nodeType":"ExpressionStatement","src":"1992:61:9"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":4768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4764,"name":"periodSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4742,"src":"2085:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4765,"name":"windowSize_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4751,"src":"2098:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":4766,"name":"granularity_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4753,"src":"2112:12:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2098:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2085:39:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4769,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2084:41:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":4770,"name":"granularity_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4753,"src":"2128:12:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2084:56:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":4772,"name":"windowSize_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4751,"src":"2144:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2084:71:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"536c6964696e6757696e646f774f7261636c653a2057494e444f575f4e4f545f4556454e4c595f444956495349424c45","id":4774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2169:50:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_02fab66c5c104e9faa12a43c836254d05ef50c6df22c7a6bbf78f99052bb8397","typeString":"literal_string \"SlidingWindowOracle: WINDOW_NOT_EVENLY_DIVISIBLE\""},"value":"SlidingWindowOracle: WINDOW_NOT_EVENLY_DIVISIBLE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_02fab66c5c104e9faa12a43c836254d05ef50c6df22c7a6bbf78f99052bb8397","typeString":"literal_string \"SlidingWindowOracle: WINDOW_NOT_EVENLY_DIVISIBLE\""}],"id":4763,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2063:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":4775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2063:166:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4776,"nodeType":"ExpressionStatement","src":"2063:166:9"},{"expression":{"argumentTypes":null,"id":4779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4777,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"2239:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4778,"name":"factory_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4749,"src":"2249:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2239:18:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":4780,"nodeType":"ExpressionStatement","src":"2239:18:9"},{"expression":{"argumentTypes":null,"id":4783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4781,"name":"windowSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4738,"src":"2267:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4782,"name":"windowSize_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4751,"src":"2280:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2267:24:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4784,"nodeType":"ExpressionStatement","src":"2267:24:9"},{"expression":{"argumentTypes":null,"id":4787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4785,"name":"granularity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"2301:11:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4786,"name":"granularity_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4753,"src":"2315:12:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2301:26:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":4788,"nodeType":"ExpressionStatement","src":"2301:26:9"}]},"documentation":null,"id":4790,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4749,"mutability":"mutable","name":"factory_","nodeType":"VariableDeclaration","overrides":null,"scope":4790,"src":"1919:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4748,"name":"address","nodeType":"ElementaryTypeName","src":"1919:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4751,"mutability":"mutable","name":"windowSize_","nodeType":"VariableDeclaration","overrides":null,"scope":4790,"src":"1937:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4750,"name":"uint","nodeType":"ElementaryTypeName","src":"1937:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4753,"mutability":"mutable","name":"granularity_","nodeType":"VariableDeclaration","overrides":null,"scope":4790,"src":"1955:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4752,"name":"uint8","nodeType":"ElementaryTypeName","src":"1955:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"src":"1918:56:9"},"returnParameters":{"id":4755,"nodeType":"ParameterList","parameters":[],"src":"1982:0:9"},"scope":5070,"src":"1907:427:9","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":4810,"nodeType":"Block","src":"2499:107:9","statements":[{"assignments":[4798],"declarations":[{"constant":false,"id":4798,"mutability":"mutable","name":"epochPeriod","nodeType":"VariableDeclaration","overrides":null,"scope":4810,"src":"2509:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4797,"name":"uint","nodeType":"ElementaryTypeName","src":"2509:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4802,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4799,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4792,"src":"2528:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":4800,"name":"periodSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4742,"src":"2540:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2528:22:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2509:41:9"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4805,"name":"epochPeriod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4798,"src":"2573:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"id":4806,"name":"granularity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"2587:11:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2573:25:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4804,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2567:5:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":4803,"name":"uint8","nodeType":"ElementaryTypeName","src":"2567:5:9","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4808,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2567:32:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":4796,"id":4809,"nodeType":"Return","src":"2560:39:9"}]},"documentation":null,"functionSelector":"dbaad32f","id":4811,"implemented":true,"kind":"function","modifiers":[],"name":"observationIndexOf","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4793,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4792,"mutability":"mutable","name":"timestamp","nodeType":"VariableDeclaration","overrides":null,"scope":4811,"src":"2449:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4791,"name":"uint","nodeType":"ElementaryTypeName","src":"2449:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2448:16:9"},"returnParameters":{"id":4796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4795,"mutability":"mutable","name":"index","nodeType":"VariableDeclaration","overrides":null,"scope":4811,"src":"2486:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4794,"name":"uint8","nodeType":"ElementaryTypeName","src":"2486:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"src":"2485:13:9"},"scope":5070,"src":"2421:185:9","stateMutability":"view","virtual":false,"visibility":"public"},{"body":{"id":4842,"nodeType":"Block","src":"2838:314:9","statements":[{"assignments":[4819],"declarations":[{"constant":false,"id":4819,"mutability":"mutable","name":"observationIndex","nodeType":"VariableDeclaration","overrides":null,"scope":4842,"src":"2848:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4818,"name":"uint8","nodeType":"ElementaryTypeName","src":"2848:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"id":4824,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4821,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"2892:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2892:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4820,"name":"observationIndexOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4811,"src":"2873:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) view returns (uint8)"}},"id":4823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2873:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"2848:60:9"},{"assignments":[4826],"declarations":[{"constant":false,"id":4826,"mutability":"mutable","name":"firstObservationIndex","nodeType":"VariableDeclaration","overrides":null,"scope":4842,"src":"3005:27:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4825,"name":"uint8","nodeType":"ElementaryTypeName","src":"3005:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"id":4833,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":4829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4827,"name":"observationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4819,"src":"3036:16:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"31","id":4828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3055:1:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3036:20:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":4830,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3035:22:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"id":4831,"name":"granularity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"3060:11:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3035:36:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"3005:66:9"},{"expression":{"argumentTypes":null,"id":4840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4834,"name":"firstObservation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4816,"src":"3081:16:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4835,"name":"pairObservations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"3100:16:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_Observation_$4734_storage_$dyn_storage_$","typeString":"mapping(address => struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref)"}},"id":4837,"indexExpression":{"argumentTypes":null,"id":4836,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4813,"src":"3117:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3100:22:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4734_storage_$dyn_storage","typeString":"struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref"}},"id":4839,"indexExpression":{"argumentTypes":null,"id":4838,"name":"firstObservationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4826,"src":"3123:21:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3100:45:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage","typeString":"struct ExampleSlidingWindowOracle.Observation storage ref"}},"src":"3081:64:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation storage pointer"}},"id":4841,"nodeType":"ExpressionStatement","src":"3081:64:9"}]},"documentation":null,"id":4843,"implemented":true,"kind":"function","modifiers":[],"name":"getFirstObservationInWindow","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4813,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":4843,"src":"2764:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4812,"name":"address","nodeType":"ElementaryTypeName","src":"2764:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"2763:14:9"},"returnParameters":{"id":4817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4816,"mutability":"mutable","name":"firstObservation","nodeType":"VariableDeclaration","overrides":null,"scope":4843,"src":"2800:36:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation"},"typeName":{"contractScope":null,"id":4815,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4734,"src":"2800:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation"}},"value":null,"visibility":"internal"}],"src":"2799:38:9"},"scope":5070,"src":"2727:425:9","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":4936,"nodeType":"Block","src":"3362:985:9","statements":[{"assignments":[4851],"declarations":[{"constant":false,"id":4851,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":4936,"src":"3372:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4850,"name":"address","nodeType":"ElementaryTypeName","src":"3372:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":4858,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4854,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"3408:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4855,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4845,"src":"3417:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4856,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4847,"src":"3425:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":4852,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"3387:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":4853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"3387:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":4857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3387:45:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3372:60:9"},{"body":{"id":4878,"nodeType":"Block","src":"3582:54:9","statements":[{"expression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4872,"name":"pairObservations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"3596:16:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_Observation_$4734_storage_$dyn_storage_$","typeString":"mapping(address => struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref)"}},"id":4874,"indexExpression":{"argumentTypes":null,"id":4873,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"3613:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3596:22:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4734_storage_$dyn_storage","typeString":"struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref"}},"id":4875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"push","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3596:27:9","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$__$returns$_t_struct$_Observation_$4734_storage_$","typeString":"function () returns (struct ExampleSlidingWindowOracle.Observation storage ref)"}},"id":4876,"isConstant":false,"isLValue":true,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3596:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage","typeString":"struct ExampleSlidingWindowOracle.Observation storage ref"}},"id":4877,"nodeType":"ExpressionStatement","src":"3596:29:9"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4866,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4860,"src":"3560:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":4867,"name":"granularity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4740,"src":"3564:11:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3560:15:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4879,"initializationExpression":{"assignments":[4860],"declarations":[{"constant":false,"id":4860,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","overrides":null,"scope":4879,"src":"3520:6:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4859,"name":"uint","nodeType":"ElementaryTypeName","src":"3520:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4865,"initialValue":{"argumentTypes":null,"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4861,"name":"pairObservations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"3529:16:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_Observation_$4734_storage_$dyn_storage_$","typeString":"mapping(address => struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref)"}},"id":4863,"indexExpression":{"argumentTypes":null,"id":4862,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"3546:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3529:22:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4734_storage_$dyn_storage","typeString":"struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref"}},"id":4864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3529:29:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3520:38:9"},"loopExpression":{"expression":{"argumentTypes":null,"id":4870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3577:3:9","subExpression":{"argumentTypes":null,"id":4869,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4860,"src":"3577:1:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4871,"nodeType":"ExpressionStatement","src":"3577:3:9"},"nodeType":"ForStatement","src":"3515:121:9"},{"assignments":[4881],"declarations":[{"constant":false,"id":4881,"mutability":"mutable","name":"observationIndex","nodeType":"VariableDeclaration","overrides":null,"scope":4936,"src":"3700:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4880,"name":"uint8","nodeType":"ElementaryTypeName","src":"3700:5:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"id":4886,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4883,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3744:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3744:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4882,"name":"observationIndexOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4811,"src":"3725:18:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) view returns (uint8)"}},"id":4885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3725:35:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"3700:60:9"},{"assignments":[4888],"declarations":[{"constant":false,"id":4888,"mutability":"mutable","name":"observation","nodeType":"VariableDeclaration","overrides":null,"scope":4936,"src":"3770:31:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation"},"typeName":{"contractScope":null,"id":4887,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4734,"src":"3770:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation"}},"value":null,"visibility":"internal"}],"id":4894,"initialValue":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":4889,"name":"pairObservations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4747,"src":"3804:16:9","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_array$_t_struct$_Observation_$4734_storage_$dyn_storage_$","typeString":"mapping(address => struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref)"}},"id":4891,"indexExpression":{"argumentTypes":null,"id":4890,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"3821:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3804:22:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_Observation_$4734_storage_$dyn_storage","typeString":"struct ExampleSlidingWindowOracle.Observation storage ref[] storage ref"}},"id":4893,"indexExpression":{"argumentTypes":null,"id":4892,"name":"observationIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4881,"src":"3827:16:9","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3804:40:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage","typeString":"struct ExampleSlidingWindowOracle.Observation storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3770:74:9"},{"assignments":[4896],"declarations":[{"constant":false,"id":4896,"mutability":"mutable","name":"timeElapsed","nodeType":"VariableDeclaration","overrides":null,"scope":4936,"src":"3945:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4895,"name":"uint","nodeType":"ElementaryTypeName","src":"3945:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":4902,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4901,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4897,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3964:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3964:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4899,"name":"observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4888,"src":"3982:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation storage pointer"}},"id":4900,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":4729,"src":"3982:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3964:39:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3945:58:9"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4903,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4896,"src":"4017:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":4904,"name":"periodSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4742,"src":"4031:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4017:24:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":4935,"nodeType":"IfStatement","src":"4013:328:9","trueBody":{"id":4934,"nodeType":"Block","src":"4043:298:9","statements":[{"assignments":[4907,4909,null],"declarations":[{"constant":false,"id":4907,"mutability":"mutable","name":"price0Cumulative","nodeType":"VariableDeclaration","overrides":null,"scope":4934,"src":"4058:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4906,"name":"uint","nodeType":"ElementaryTypeName","src":"4058:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4909,"mutability":"mutable","name":"price1Cumulative","nodeType":"VariableDeclaration","overrides":null,"scope":4934,"src":"4081:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4908,"name":"uint","nodeType":"ElementaryTypeName","src":"4081:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":4914,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4912,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"4150:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":4910,"name":"AstraOracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6897,"src":"4107:18:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraOracleLibrary_$6897_$","typeString":"type(library AstraOracleLibrary)"}},"id":4911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currentCumulativePrices","nodeType":"MemberAccess","referencedDeclaration":6896,"src":"4107:42:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint32_$","typeString":"function (address) view returns (uint256,uint256,uint32)"}},"id":4913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4107:48:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint32_$","typeString":"tuple(uint256,uint256,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"4057:98:9"},{"expression":{"argumentTypes":null,"id":4920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4915,"name":"observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4888,"src":"4169:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation storage pointer"}},"id":4917,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":4729,"src":"4169:21:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4918,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4193:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":4919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4193:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4169:39:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4921,"nodeType":"ExpressionStatement","src":"4169:39:9"},{"expression":{"argumentTypes":null,"id":4926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4922,"name":"observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4888,"src":"4222:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation storage pointer"}},"id":4924,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"price0Cumulative","nodeType":"MemberAccess","referencedDeclaration":4731,"src":"4222:28:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4925,"name":"price0Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4907,"src":"4253:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4222:47:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4927,"nodeType":"ExpressionStatement","src":"4222:47:9"},{"expression":{"argumentTypes":null,"id":4932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":4928,"name":"observation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4888,"src":"4283:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation storage pointer"}},"id":4930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"price1Cumulative","nodeType":"MemberAccess","referencedDeclaration":4733,"src":"4283:28:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":4931,"name":"price1Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4909,"src":"4314:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4283:47:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4933,"nodeType":"ExpressionStatement","src":"4283:47:9"}]}}]},"documentation":null,"functionSelector":"c640752d","id":4937,"implemented":true,"kind":"function","modifiers":[],"name":"update","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4845,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":4937,"src":"3321:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4844,"name":"address","nodeType":"ElementaryTypeName","src":"3321:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4847,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":4937,"src":"3337:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4846,"name":"address","nodeType":"ElementaryTypeName","src":"3337:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"3320:32:9"},"returnParameters":{"id":4849,"nodeType":"ParameterList","parameters":[],"src":"3362:0:9"},"scope":5070,"src":"3305:1042:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":4976,"nodeType":"Block","src":"4718:262:9","statements":[{"assignments":[4953],"declarations":[{"constant":false,"id":4953,"mutability":"mutable","name":"priceAverage","nodeType":"VariableDeclaration","overrides":null,"scope":4976,"src":"4760:40:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":4952,"name":"FixedPoint.uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"4760:20:9","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"}],"id":4966,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":4958,"name":"priceCumulativeEnd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4941,"src":"4846:18:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":4959,"name":"priceCumulativeStart","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4939,"src":"4867:20:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4846:41:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4961,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4845:43:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":4962,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4943,"src":"4891:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4845:57:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4957,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4837:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":4956,"name":"uint224","nodeType":"ElementaryTypeName","src":"4837:7:9","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":4964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4837:66:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"expression":{"argumentTypes":null,"id":4954,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8007,"src":"4803:10:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$8007_$","typeString":"type(library FixedPoint)"}},"id":4955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"uq112x112","nodeType":"MemberAccess","referencedDeclaration":7386,"src":"4803:20:9","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":4965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4803:110:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"nodeType":"VariableDeclarationStatement","src":"4760:153:9"},{"expression":{"argumentTypes":null,"id":4974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":4967,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4948,"src":"4923:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4970,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4945,"src":"4952:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":4968,"name":"priceAverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4953,"src":"4935:12:9","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":4969,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":7505,"src":"4935:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq112x112_$7386_memory_ptr_$_t_uint256_$returns$_t_struct$_uq144x112_$7389_memory_ptr_$bound_to$_t_struct$_uq112x112_$7386_memory_ptr_$","typeString":"function (struct FixedPoint.uq112x112 memory,uint256) pure returns (struct FixedPoint.uq144x112 memory)"}},"id":4971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4935:26:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$7389_memory_ptr","typeString":"struct FixedPoint.uq144x112 memory"}},"id":4972,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"decode144","nodeType":"MemberAccess","referencedDeclaration":7467,"src":"4935:36:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_struct$_uq144x112_$7389_memory_ptr_$returns$_t_uint144_$bound_to$_t_struct$_uq144x112_$7389_memory_ptr_$","typeString":"function (struct FixedPoint.uq144x112 memory) pure returns (uint144)"}},"id":4973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4935:38:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"4923:50:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4975,"nodeType":"ExpressionStatement","src":"4923:50:9"}]},"documentation":null,"id":4977,"implemented":true,"kind":"function","modifiers":[],"name":"computeAmountOut","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4939,"mutability":"mutable","name":"priceCumulativeStart","nodeType":"VariableDeclaration","overrides":null,"scope":4977,"src":"4582:25:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4938,"name":"uint","nodeType":"ElementaryTypeName","src":"4582:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4941,"mutability":"mutable","name":"priceCumulativeEnd","nodeType":"VariableDeclaration","overrides":null,"scope":4977,"src":"4609:23:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4940,"name":"uint","nodeType":"ElementaryTypeName","src":"4609:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4943,"mutability":"mutable","name":"timeElapsed","nodeType":"VariableDeclaration","overrides":null,"scope":4977,"src":"4642:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4942,"name":"uint","nodeType":"ElementaryTypeName","src":"4642:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4945,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":4977,"src":"4660:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4944,"name":"uint","nodeType":"ElementaryTypeName","src":"4660:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4572:107:9"},"returnParameters":{"id":4949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4948,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":4977,"src":"4702:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4947,"name":"uint","nodeType":"ElementaryTypeName","src":"4702:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4701:16:9"},"scope":5070,"src":"4547:433:9","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":5068,"nodeType":"Block","src":"5375:944:9","statements":[{"assignments":[4989],"declarations":[{"constant":false,"id":4989,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":5068,"src":"5385:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4988,"name":"address","nodeType":"ElementaryTypeName","src":"5385:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":4996,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":4992,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4736,"src":"5421:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4993,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"5430:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":4994,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4983,"src":"5439:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":4990,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"5400:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":4991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"5400:20:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":4995,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5400:48:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5385:63:9"},{"assignments":[4998],"declarations":[{"constant":false,"id":4998,"mutability":"mutable","name":"firstObservation","nodeType":"VariableDeclaration","overrides":null,"scope":5068,"src":"5458:36:9","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation"},"typeName":{"contractScope":null,"id":4997,"name":"Observation","nodeType":"UserDefinedTypeName","referencedDeclaration":4734,"src":"5458:11:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation"}},"value":null,"visibility":"internal"}],"id":5002,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5000,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4989,"src":"5525:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":4999,"name":"getFirstObservationInWindow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4843,"src":"5497:27:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_struct$_Observation_$4734_storage_ptr_$","typeString":"function (address) view returns (struct ExampleSlidingWindowOracle.Observation storage pointer)"}},"id":5001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5497:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation storage pointer"}},"nodeType":"VariableDeclarationStatement","src":"5458:72:9"},{"assignments":[5004],"declarations":[{"constant":false,"id":5004,"mutability":"mutable","name":"timeElapsed","nodeType":"VariableDeclaration","overrides":null,"scope":5068,"src":"5541:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5003,"name":"uint","nodeType":"ElementaryTypeName","src":"5541:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5010,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5009,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5005,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5560:5:9","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":5006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"5560:15:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5007,"name":"firstObservation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"5578:16:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation storage pointer"}},"id":5008,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":4729,"src":"5578:26:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5560:44:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5541:63:9"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5012,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5004,"src":"5622:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":5013,"name":"windowSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4738,"src":"5637:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5622:25:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"536c6964696e6757696e646f774f7261636c653a204d495353494e475f484953544f524943414c5f4f42534552564154494f4e","id":5015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5649:53:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_20805c472e37d0165585052b64649efe4bb492e8fcaeaa3a202cc46e8a639643","typeString":"literal_string \"SlidingWindowOracle: MISSING_HISTORICAL_OBSERVATION\""},"value":"SlidingWindowOracle: MISSING_HISTORICAL_OBSERVATION"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_20805c472e37d0165585052b64649efe4bb492e8fcaeaa3a202cc46e8a639643","typeString":"literal_string \"SlidingWindowOracle: MISSING_HISTORICAL_OBSERVATION\""}],"id":5011,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5614:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5016,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5614:89:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5017,"nodeType":"ExpressionStatement","src":"5614:89:9"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5019,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5004,"src":"5753:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5020,"name":"windowSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4738,"src":"5768:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5021,"name":"periodSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4742,"src":"5781:10:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"hexValue":"32","id":5022,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5794:1:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5781:14:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5768:27:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5753:42:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"536c6964696e6757696e646f774f7261636c653a20554e45585045435445445f54494d455f454c4150534544","id":5026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5797:46:9","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_408716186f121814b7dbc817d4e1fcdf168ff1958e9c797fca8eb4670c61ba79","typeString":"literal_string \"SlidingWindowOracle: UNEXPECTED_TIME_ELAPSED\""},"value":"SlidingWindowOracle: UNEXPECTED_TIME_ELAPSED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_408716186f121814b7dbc817d4e1fcdf168ff1958e9c797fca8eb4670c61ba79","typeString":"literal_string \"SlidingWindowOracle: UNEXPECTED_TIME_ELAPSED\""}],"id":5018,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5745:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5027,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5745:99:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5028,"nodeType":"ExpressionStatement","src":"5745:99:9"},{"assignments":[5030,5032,null],"declarations":[{"constant":false,"id":5030,"mutability":"mutable","name":"price0Cumulative","nodeType":"VariableDeclaration","overrides":null,"scope":5068,"src":"5856:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5029,"name":"uint","nodeType":"ElementaryTypeName","src":"5856:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5032,"mutability":"mutable","name":"price1Cumulative","nodeType":"VariableDeclaration","overrides":null,"scope":5068,"src":"5879:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5031,"name":"uint","nodeType":"ElementaryTypeName","src":"5879:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":5037,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5035,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4989,"src":"5948:4:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":5033,"name":"AstraOracleLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6897,"src":"5905:18:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraOracleLibrary_$6897_$","typeString":"type(library AstraOracleLibrary)"}},"id":5034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currentCumulativePrices","nodeType":"MemberAccess","referencedDeclaration":6896,"src":"5905:42:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$_t_uint256_$_t_uint32_$","typeString":"function (address) view returns (uint256,uint256,uint32)"}},"id":5036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5905:48:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint32_$","typeString":"tuple(uint256,uint256,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"5855:98:9"},{"assignments":[5039,null],"declarations":[{"constant":false,"id":5039,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","overrides":null,"scope":5068,"src":"5964:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5038,"name":"address","nodeType":"ElementaryTypeName","src":"5964:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},null],"id":5045,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5042,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"6007:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5043,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4983,"src":"6016:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":5040,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"5983:12:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":5041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sortTokens","nodeType":"MemberAccess","referencedDeclaration":5903,"src":"5983:23:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":5044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5983:42:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"5963:62:9"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5046,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5039,"src":"6040:6:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":5047,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4979,"src":"6050:7:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6040:17:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":5066,"nodeType":"Block","src":"6189:124:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5059,"name":"firstObservation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"6227:16:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation storage pointer"}},"id":5060,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price1Cumulative","nodeType":"MemberAccess","referencedDeclaration":4733,"src":"6227:33:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5061,"name":"price1Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5032,"src":"6262:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5062,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5004,"src":"6280:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5063,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4981,"src":"6293:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5058,"name":"computeAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"6210:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256) pure returns (uint256)"}},"id":5064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6210:92:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4987,"id":5065,"nodeType":"Return","src":"6203:99:9"}]},"id":5067,"nodeType":"IfStatement","src":"6036:277:9","trueBody":{"id":5057,"nodeType":"Block","src":"6059:124:9","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5050,"name":"firstObservation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4998,"src":"6097:16:9","typeDescriptions":{"typeIdentifier":"t_struct$_Observation_$4734_storage_ptr","typeString":"struct ExampleSlidingWindowOracle.Observation storage pointer"}},"id":5051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price0Cumulative","nodeType":"MemberAccess","referencedDeclaration":4731,"src":"6097:33:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5052,"name":"price0Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5030,"src":"6132:16:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5053,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5004,"src":"6150:11:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5054,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4981,"src":"6163:8:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5049,"name":"computeAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4977,"src":"6080:16:9","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256) pure returns (uint256)"}},"id":5055,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6080:92:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4987,"id":5056,"nodeType":"Return","src":"6073:99:9"}]}}]},"documentation":null,"functionSelector":"8c86f1e4","id":5069,"implemented":true,"kind":"function","modifiers":[],"name":"consult","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":4984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4979,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","overrides":null,"scope":5069,"src":"5286:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4978,"name":"address","nodeType":"ElementaryTypeName","src":"5286:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":4981,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":5069,"src":"5303:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4980,"name":"uint","nodeType":"ElementaryTypeName","src":"5303:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":4983,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","overrides":null,"scope":5069,"src":"5318:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":4982,"name":"address","nodeType":"ElementaryTypeName","src":"5318:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"5285:50:9"},"returnParameters":{"id":4987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4986,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":5069,"src":"5359:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4985,"name":"uint","nodeType":"ElementaryTypeName","src":"5359:4:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5358:16:9"},"scope":5070,"src":"5269:1050:9","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5071,"src":"636:5685:9"}],"src":"0:6322:9"},"id":9},"contracts/periphery/examples/ExampleSwapToPrice.sol":{"ast":{"absolutePath":"contracts/periphery/examples/ExampleSwapToPrice.sol","exportedSymbols":{"ExampleSwapToPrice":[5270]},"id":5271,"nodeType":"SourceUnit","nodes":[{"id":5072,"literals":["solidity","=","0.6",".6"],"nodeType":"PragmaDirective","src":"0:23:10"},{"absolutePath":"contracts/core/interfaces/IAstraPair.sol","file":"../../core/interfaces/IAstraPair.sol","id":5073,"nodeType":"ImportDirective","scope":5271,"sourceUnit":319,"src":"25:46:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/Babylonian.sol","file":"../libraries/Babylonian.sol","id":5074,"nodeType":"ImportDirective","scope":5271,"sourceUnit":7101,"src":"72:37:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/TransferHelper.sol","file":"../libraries/TransferHelper.sol","id":5075,"nodeType":"ImportDirective","scope":5271,"sourceUnit":8464,"src":"110:41:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/AstraLiquidityMathLibrary.sol","file":"../libraries/AstraLiquidityMathLibrary.sol","id":5076,"nodeType":"ImportDirective","scope":5271,"sourceUnit":6791,"src":"153:52:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/IERC20.sol","file":"../interfaces/IERC20.sol","id":5077,"nodeType":"ImportDirective","scope":5271,"sourceUnit":5767,"src":"206:34:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/interfaces/IAstraRouter01.sol","file":"../interfaces/IAstraRouter01.sol","id":5078,"nodeType":"ImportDirective","scope":5271,"sourceUnit":5595,"src":"241:42:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/SafeMath.sol","file":"../libraries/SafeMath.sol","id":5079,"nodeType":"ImportDirective","scope":5271,"sourceUnit":8304,"src":"284:35:10","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/AstraLibrary.sol","file":"../libraries/AstraLibrary.sol","id":5080,"nodeType":"ImportDirective","scope":5271,"sourceUnit":6325,"src":"320:39:10","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":5270,"linearizedBaseContracts":[5270],"name":"ExampleSwapToPrice","nodeType":"ContractDefinition","nodes":[{"id":5083,"libraryName":{"contractScope":null,"id":5081,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":8303,"src":"401:8:10","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$8303","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"395:27:10","typeName":{"id":5082,"name":"uint256","nodeType":"ElementaryTypeName","src":"414:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"functionSelector":"f887ea40","id":5085,"mutability":"immutable","name":"router","nodeType":"VariableDeclaration","overrides":null,"scope":5270,"src":"428:38:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"},"typeName":{"contractScope":null,"id":5084,"name":"IAstraRouter01","nodeType":"UserDefinedTypeName","referencedDeclaration":5594,"src":"428:14:10","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"c45a0155","id":5087,"mutability":"immutable","name":"factory","nodeType":"VariableDeclaration","overrides":null,"scope":5270,"src":"472:32:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5086,"name":"address","nodeType":"ElementaryTypeName","src":"472:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"public"},{"body":{"id":5102,"nodeType":"Block","src":"572:61:10","statements":[{"expression":{"argumentTypes":null,"id":5096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5094,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5087,"src":"582:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5095,"name":"factory_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5089,"src":"592:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"582:18:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5097,"nodeType":"ExpressionStatement","src":"582:18:10"},{"expression":{"argumentTypes":null,"id":5100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5098,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5085,"src":"610:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5099,"name":"router_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"619:7:10","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"src":"610:16:10","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":5101,"nodeType":"ExpressionStatement","src":"610:16:10"}]},"documentation":null,"id":5103,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5089,"mutability":"mutable","name":"factory_","nodeType":"VariableDeclaration","overrides":null,"scope":5103,"src":"523:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5088,"name":"address","nodeType":"ElementaryTypeName","src":"523:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5091,"mutability":"mutable","name":"router_","nodeType":"VariableDeclaration","overrides":null,"scope":5103,"src":"541:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"},"typeName":{"contractScope":null,"id":5090,"name":"IAstraRouter01","nodeType":"UserDefinedTypeName","referencedDeclaration":5594,"src":"541:14:10","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"value":null,"visibility":"internal"}],"src":"522:42:10"},"returnParameters":{"id":5093,"nodeType":"ParameterList","parameters":[],"src":"572:0:10"},"scope":5270,"src":"511:122:10","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":5268,"nodeType":"Block","src":"1165:1592:10","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5123,"name":"truePriceTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5109,"src":"1262:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":5124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1281:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1262:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5126,"name":"truePriceTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5111,"src":"1286:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":5127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1305:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1286:20:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1262:44:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4578616d706c6553776170546f50726963653a205a45524f5f5052494345","id":5130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1308:32:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_28884a31faca5d65acd285d3e7facdbc4f9dbd1892b1de1088d8d4416762107c","typeString":"literal_string \"ExampleSwapToPrice: ZERO_PRICE\""},"value":"ExampleSwapToPrice: ZERO_PRICE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28884a31faca5d65acd285d3e7facdbc4f9dbd1892b1de1088d8d4416762107c","typeString":"literal_string \"ExampleSwapToPrice: ZERO_PRICE\""}],"id":5122,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1254:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1254:87:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5132,"nodeType":"ExpressionStatement","src":"1254:87:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5134,"name":"maxSpendTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5113,"src":"1459:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":5135,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1477:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1459:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5137,"name":"maxSpendTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5115,"src":"1482:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":5138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1500:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1482:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1459:42:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4578616d706c6553776170546f50726963653a205a45524f5f5350454e44","id":5141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1503:32:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0e350328e0fc66ff97196802ff2d70f334d01d23a12a3b201cf85446302b610f","typeString":"literal_string \"ExampleSwapToPrice: ZERO_SPEND\""},"value":"ExampleSwapToPrice: ZERO_SPEND"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0e350328e0fc66ff97196802ff2d70f334d01d23a12a3b201cf85446302b610f","typeString":"literal_string \"ExampleSwapToPrice: ZERO_SPEND\""}],"id":5133,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1451:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1451:85:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5143,"nodeType":"ExpressionStatement","src":"1451:85:10"},{"assignments":[5145],"declarations":[{"constant":false,"id":5145,"mutability":"mutable","name":"aToB","nodeType":"VariableDeclaration","overrides":null,"scope":5268,"src":"1547:9:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5144,"name":"bool","nodeType":"ElementaryTypeName","src":"1547:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"id":5146,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"1547:9:10"},{"assignments":[5148],"declarations":[{"constant":false,"id":5148,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":5268,"src":"1566:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5147,"name":"uint256","nodeType":"ElementaryTypeName","src":"1566:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5149,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"1566:16:10"},{"id":5173,"nodeType":"Block","src":"1592:300:10","statements":[{"assignments":[5151,5153],"declarations":[{"constant":false,"id":5151,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","overrides":null,"scope":5173,"src":"1607:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5150,"name":"uint256","nodeType":"ElementaryTypeName","src":"1607:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5153,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","overrides":null,"scope":5173,"src":"1625:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5152,"name":"uint256","nodeType":"ElementaryTypeName","src":"1625:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5160,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5156,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5087,"src":"1670:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5157,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5105,"src":"1679:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5158,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"1687:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":5154,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"1645:12:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":5155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":5998,"src":"1645:24:10","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address) view returns (uint256,uint256)"}},"id":5159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1645:49:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1606:88:10"},{"expression":{"argumentTypes":null,"id":5171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":5161,"name":"aToB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"1709:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":5162,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5148,"src":"1715:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5163,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1708:16:10","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5166,"name":"truePriceTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5109,"src":"1799:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5167,"name":"truePriceTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5111,"src":"1816:15:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5168,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5151,"src":"1849:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5169,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5153,"src":"1859:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":5164,"name":"AstraLiquidityMathLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6790,"src":"1727:25:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLiquidityMathLibrary_$6790_$","typeString":"type(library AstraLiquidityMathLibrary)"}},"id":5165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"computeProfitMaximizingTrade","nodeType":"MemberAccess","referencedDeclaration":6425,"src":"1727:54:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256) pure returns (bool,uint256)"}},"id":5170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1727:154:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"src":"1708:173:10","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5172,"nodeType":"ExpressionStatement","src":"1708:173:10"}]},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5175,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5148,"src":"1910:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":5176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1921:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1910:12:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f494e","id":5178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1924:36:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_e00c3db9f0c792ecddaeae01031fb06d978f06975d30b88ac8730a99f6d0fa3a","typeString":"literal_string \"ExampleSwapToPrice: ZERO_AMOUNT_IN\""},"value":"ExampleSwapToPrice: ZERO_AMOUNT_IN"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e00c3db9f0c792ecddaeae01031fb06d978f06975d30b88ac8730a99f6d0fa3a","typeString":"literal_string \"ExampleSwapToPrice: ZERO_AMOUNT_IN\""}],"id":5174,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1902:7:10","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1902:59:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5180,"nodeType":"ExpressionStatement","src":"1902:59:10"},{"assignments":[5182],"declarations":[{"constant":false,"id":5182,"mutability":"mutable","name":"maxSpend","nodeType":"VariableDeclaration","overrides":null,"scope":5268,"src":"2025:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5181,"name":"uint256","nodeType":"ElementaryTypeName","src":"2025:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":5187,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"id":5183,"name":"aToB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"2044:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":5185,"name":"maxSpendTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5115,"src":"2068:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2044:38:10","trueExpression":{"argumentTypes":null,"id":5184,"name":"maxSpendTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5113,"src":"2051:14:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2025:57:10"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5188,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5148,"src":"2096:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":5189,"name":"maxSpend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5182,"src":"2107:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2096:19:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":5196,"nodeType":"IfStatement","src":"2092:69:10","trueBody":{"id":5195,"nodeType":"Block","src":"2117:44:10","statements":[{"expression":{"argumentTypes":null,"id":5193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5191,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5148,"src":"2131:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5192,"name":"maxSpend","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5182,"src":"2142:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2131:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5194,"nodeType":"ExpressionStatement","src":"2131:19:10"}]}},{"assignments":[5198],"declarations":[{"constant":false,"id":5198,"mutability":"mutable","name":"tokenIn","nodeType":"VariableDeclaration","overrides":null,"scope":5268,"src":"2171:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5197,"name":"address","nodeType":"ElementaryTypeName","src":"2171:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":5203,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"id":5199,"name":"aToB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"2189:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":5201,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"2205:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5202,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2189:22:10","trueExpression":{"argumentTypes":null,"id":5200,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5105,"src":"2196:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2171:40:10"},{"assignments":[5205],"declarations":[{"constant":false,"id":5205,"mutability":"mutable","name":"tokenOut","nodeType":"VariableDeclaration","overrides":null,"scope":5268,"src":"2221:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5204,"name":"address","nodeType":"ElementaryTypeName","src":"2221:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":5210,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"id":5206,"name":"aToB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"2240:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":5208,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5105,"src":"2256:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2240:22:10","trueExpression":{"argumentTypes":null,"id":5207,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5107,"src":"2247:6:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2221:41:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5214,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5198,"src":"2304:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":5215,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2313:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":5216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2313:10:10","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5219,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2333:4:10","typeDescriptions":{"typeIdentifier":"t_contract$_ExampleSwapToPrice_$5270","typeString":"contract ExampleSwapToPrice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ExampleSwapToPrice_$5270","typeString":"contract ExampleSwapToPrice"}],"id":5218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2325:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5217,"name":"address","nodeType":"ElementaryTypeName","src":"2325:7:10","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":5220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2325:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5221,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5148,"src":"2340:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":5211,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"2272:14:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":5213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":8437,"src":"2272:31:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":5222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2272:77:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5223,"nodeType":"ExpressionStatement","src":"2272:77:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5227,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5198,"src":"2386:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5230,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5085,"src":"2403:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}],"id":5229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2395:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5228,"name":"address","nodeType":"ElementaryTypeName","src":"2395:7:10","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":5231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2395:15:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5232,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5148,"src":"2412:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":5224,"name":"TransferHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8463,"src":"2359:14:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_TransferHelper_$8463_$","typeString":"type(library TransferHelper)"}},"id":5226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeApprove","nodeType":"MemberAccess","referencedDeclaration":8348,"src":"2359:26:10","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":5233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2359:62:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5234,"nodeType":"ExpressionStatement","src":"2359:62:10"},{"assignments":[5239],"declarations":[{"constant":false,"id":5239,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":5268,"src":"2432:21:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5237,"name":"address","nodeType":"ElementaryTypeName","src":"2432:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5238,"length":null,"nodeType":"ArrayTypeName","src":"2432:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"id":5245,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"32","id":5243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2470:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":5242,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2456:13:10","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (address[] memory)"},"typeName":{"baseType":{"id":5240,"name":"address","nodeType":"ElementaryTypeName","src":"2460:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5241,"length":null,"nodeType":"ArrayTypeName","src":"2460:9:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":5244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2456:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2432:40:10"},{"expression":{"argumentTypes":null,"id":5250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":5246,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5239,"src":"2482:4:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5248,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":5247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2487:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2482:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5249,"name":"tokenIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5198,"src":"2492:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2482:17:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5251,"nodeType":"ExpressionStatement","src":"2482:17:10"},{"expression":{"argumentTypes":null,"id":5256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":5252,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5239,"src":"2509:4:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":5254,"indexExpression":{"argumentTypes":null,"hexValue":"31","id":5253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2514:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2509:7:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":5255,"name":"tokenOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5205,"src":"2519:8:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2509:18:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5257,"nodeType":"ExpressionStatement","src":"2509:18:10"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5261,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5148,"src":"2583:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"hexValue":"30","id":5262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2605:1:10","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"argumentTypes":null,"id":5263,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5239,"src":"2698:4:10","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},{"argumentTypes":null,"id":5264,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5117,"src":"2716:2:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5265,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5119,"src":"2732:8:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":5258,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5085,"src":"2538:6:10","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":5260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swapExactTokensForTokens","nodeType":"MemberAccess","referencedDeclaration":5457,"src":"2538:31:10","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"}},"id":5266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2538:212:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":5267,"nodeType":"ExpressionStatement","src":"2538:212:10"}]},"documentation":null,"functionSelector":"bef90fd3","id":5269,"implemented":true,"kind":"function","modifiers":[],"name":"swapToPrice","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5105,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":5269,"src":"937:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5104,"name":"address","nodeType":"ElementaryTypeName","src":"937:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5107,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":5269,"src":"961:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5106,"name":"address","nodeType":"ElementaryTypeName","src":"961:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5109,"mutability":"mutable","name":"truePriceTokenA","nodeType":"VariableDeclaration","overrides":null,"scope":5269,"src":"985:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5108,"name":"uint256","nodeType":"ElementaryTypeName","src":"985:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5111,"mutability":"mutable","name":"truePriceTokenB","nodeType":"VariableDeclaration","overrides":null,"scope":5269,"src":"1018:23:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5110,"name":"uint256","nodeType":"ElementaryTypeName","src":"1018:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5113,"mutability":"mutable","name":"maxSpendTokenA","nodeType":"VariableDeclaration","overrides":null,"scope":5269,"src":"1051:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5112,"name":"uint256","nodeType":"ElementaryTypeName","src":"1051:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5115,"mutability":"mutable","name":"maxSpendTokenB","nodeType":"VariableDeclaration","overrides":null,"scope":5269,"src":"1083:22:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5114,"name":"uint256","nodeType":"ElementaryTypeName","src":"1083:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5117,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5269,"src":"1115:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5116,"name":"address","nodeType":"ElementaryTypeName","src":"1115:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5119,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5269,"src":"1135:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5118,"name":"uint256","nodeType":"ElementaryTypeName","src":"1135:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"927:230:10"},"returnParameters":{"id":5121,"nodeType":"ParameterList","parameters":[],"src":"1165:0:10"},"scope":5270,"src":"907:1850:10","stateMutability":"nonpayable","virtual":false,"visibility":"public"}],"scope":5271,"src":"361:2398:10"}],"src":"0:2760:10"},"id":10},"contracts/periphery/interfaces/IAstraMigrator.sol":{"ast":{"absolutePath":"contracts/periphery/interfaces/IAstraMigrator.sol","exportedSymbols":{"IAstraMigrator":[5286]},"id":5287,"nodeType":"SourceUnit","nodes":[{"id":5272,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:11"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":5286,"linearizedBaseContracts":[5286],"name":"IAstraMigrator","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"functionSelector":"b7df1d25","id":5285,"implemented":false,"kind":"function","modifiers":[],"name":"migrate","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5274,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":5285,"src":"74:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5273,"name":"address","nodeType":"ElementaryTypeName","src":"74:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5276,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":5285,"src":"89:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5275,"name":"uint","nodeType":"ElementaryTypeName","src":"89:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5278,"mutability":"mutable","name":"amountETHMin","nodeType":"VariableDeclaration","overrides":null,"scope":5285,"src":"110:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5277,"name":"uint","nodeType":"ElementaryTypeName","src":"110:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5280,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5285,"src":"129:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5279,"name":"address","nodeType":"ElementaryTypeName","src":"129:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5282,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5285,"src":"141:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5281,"name":"uint","nodeType":"ElementaryTypeName","src":"141:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"73:82:11"},"returnParameters":{"id":5284,"nodeType":"ParameterList","parameters":[],"src":"164:0:11"},"scope":5286,"src":"57:108:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5287,"src":"26:141:11"}],"src":"0:168:11"},"id":11},"contracts/periphery/interfaces/IAstraRouter01.sol":{"ast":{"absolutePath":"contracts/periphery/interfaces/IAstraRouter01.sol","exportedSymbols":{"IAstraRouter01":[5594]},"id":5595,"nodeType":"SourceUnit","nodes":[{"id":5288,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"0:24:12"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":5594,"linearizedBaseContracts":[5594],"name":"IAstraRouter01","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"functionSelector":"c45a0155","id":5293,"implemented":false,"kind":"function","modifiers":[],"name":"factory","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5289,"nodeType":"ParameterList","parameters":[],"src":"73:2:12"},"returnParameters":{"id":5292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5291,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5293,"src":"99:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5290,"name":"address","nodeType":"ElementaryTypeName","src":"99:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"98:9:12"},"scope":5594,"src":"57:51:12","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"90793ea8","id":5298,"implemented":false,"kind":"function","modifiers":[],"name":"SAMB","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5294,"nodeType":"ParameterList","parameters":[],"src":"127:2:12"},"returnParameters":{"id":5297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5296,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5298,"src":"153:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5295,"name":"address","nodeType":"ElementaryTypeName","src":"153:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"152:9:12"},"scope":5594,"src":"114:48:12","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"e8e33700","id":5323,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidity","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5300,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":5323,"src":"199:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5299,"name":"address","nodeType":"ElementaryTypeName","src":"199:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5302,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":5323,"src":"223:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5301,"name":"address","nodeType":"ElementaryTypeName","src":"223:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5304,"mutability":"mutable","name":"amountADesired","nodeType":"VariableDeclaration","overrides":null,"scope":5323,"src":"247:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5303,"name":"uint256","nodeType":"ElementaryTypeName","src":"247:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5306,"mutability":"mutable","name":"amountBDesired","nodeType":"VariableDeclaration","overrides":null,"scope":5323,"src":"279:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5305,"name":"uint256","nodeType":"ElementaryTypeName","src":"279:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5308,"mutability":"mutable","name":"amountAMin","nodeType":"VariableDeclaration","overrides":null,"scope":5323,"src":"311:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5307,"name":"uint256","nodeType":"ElementaryTypeName","src":"311:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5310,"mutability":"mutable","name":"amountBMin","nodeType":"VariableDeclaration","overrides":null,"scope":5323,"src":"339:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5309,"name":"uint256","nodeType":"ElementaryTypeName","src":"339:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5312,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5323,"src":"367:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5311,"name":"address","nodeType":"ElementaryTypeName","src":"367:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5314,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5323,"src":"387:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5313,"name":"uint256","nodeType":"ElementaryTypeName","src":"387:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"189:220:12"},"returnParameters":{"id":5322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5317,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":5323,"src":"457:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5316,"name":"uint256","nodeType":"ElementaryTypeName","src":"457:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5319,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":5323,"src":"486:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5318,"name":"uint256","nodeType":"ElementaryTypeName","src":"486:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5321,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":5323,"src":"515:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5320,"name":"uint256","nodeType":"ElementaryTypeName","src":"515:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"443:99:12"},"scope":5594,"src":"168:375:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"84b0b3a2","id":5344,"implemented":false,"kind":"function","modifiers":[],"name":"addLiquidityAMB","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5325,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":5344,"src":"583:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5324,"name":"address","nodeType":"ElementaryTypeName","src":"583:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5327,"mutability":"mutable","name":"amountTokenDesired","nodeType":"VariableDeclaration","overrides":null,"scope":5344,"src":"606:26:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5326,"name":"uint256","nodeType":"ElementaryTypeName","src":"606:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5329,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":5344,"src":"642:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5328,"name":"uint256","nodeType":"ElementaryTypeName","src":"642:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5331,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":5344,"src":"674:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5330,"name":"uint256","nodeType":"ElementaryTypeName","src":"674:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5333,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5344,"src":"704:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5332,"name":"address","nodeType":"ElementaryTypeName","src":"704:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5335,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5344,"src":"724:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5334,"name":"uint256","nodeType":"ElementaryTypeName","src":"724:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"573:173:12"},"returnParameters":{"id":5343,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5338,"mutability":"mutable","name":"amountToken","nodeType":"VariableDeclaration","overrides":null,"scope":5344,"src":"810:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5337,"name":"uint256","nodeType":"ElementaryTypeName","src":"810:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5340,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":5344,"src":"843:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5339,"name":"uint256","nodeType":"ElementaryTypeName","src":"843:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5342,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":5344,"src":"874:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5341,"name":"uint256","nodeType":"ElementaryTypeName","src":"874:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"796:105:12"},"scope":5594,"src":"549:353:12","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"baa2abde","id":5365,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidity","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5346,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":5365,"src":"942:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5345,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5348,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":5365,"src":"966:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5347,"name":"address","nodeType":"ElementaryTypeName","src":"966:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5350,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":5365,"src":"990:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5349,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5352,"mutability":"mutable","name":"amountAMin","nodeType":"VariableDeclaration","overrides":null,"scope":5365,"src":"1017:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5351,"name":"uint256","nodeType":"ElementaryTypeName","src":"1017:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5354,"mutability":"mutable","name":"amountBMin","nodeType":"VariableDeclaration","overrides":null,"scope":5365,"src":"1045:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5353,"name":"uint256","nodeType":"ElementaryTypeName","src":"1045:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5356,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5365,"src":"1073:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5355,"name":"address","nodeType":"ElementaryTypeName","src":"1073:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5358,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5365,"src":"1093:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5357,"name":"uint256","nodeType":"ElementaryTypeName","src":"1093:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"932:183:12"},"returnParameters":{"id":5364,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5361,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":5365,"src":"1134:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5360,"name":"uint256","nodeType":"ElementaryTypeName","src":"1134:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5363,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":5365,"src":"1151:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5362,"name":"uint256","nodeType":"ElementaryTypeName","src":"1151:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1133:34:12"},"scope":5594,"src":"908:260:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"e77bdfc5","id":5384,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityAMB","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5378,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5367,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":5384,"src":"1211:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5366,"name":"address","nodeType":"ElementaryTypeName","src":"1211:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5369,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":5384,"src":"1234:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5368,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5371,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":5384,"src":"1261:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5370,"name":"uint256","nodeType":"ElementaryTypeName","src":"1261:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5373,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":5384,"src":"1293:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5372,"name":"uint256","nodeType":"ElementaryTypeName","src":"1293:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5375,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5384,"src":"1323:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5374,"name":"address","nodeType":"ElementaryTypeName","src":"1323:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5377,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5384,"src":"1343:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5376,"name":"uint256","nodeType":"ElementaryTypeName","src":"1343:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1201:164:12"},"returnParameters":{"id":5383,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5380,"mutability":"mutable","name":"amountToken","nodeType":"VariableDeclaration","overrides":null,"scope":5384,"src":"1384:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5379,"name":"uint256","nodeType":"ElementaryTypeName","src":"1384:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5382,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":5384,"src":"1405:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5381,"name":"uint256","nodeType":"ElementaryTypeName","src":"1405:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1383:40:12"},"scope":5594,"src":"1174:250:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"2195995c","id":5413,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityWithPermit","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5386,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1474:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5385,"name":"address","nodeType":"ElementaryTypeName","src":"1474:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5388,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1498:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5387,"name":"address","nodeType":"ElementaryTypeName","src":"1498:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5390,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1522:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5389,"name":"uint256","nodeType":"ElementaryTypeName","src":"1522:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5392,"mutability":"mutable","name":"amountAMin","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1549:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5391,"name":"uint256","nodeType":"ElementaryTypeName","src":"1549:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5394,"mutability":"mutable","name":"amountBMin","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1577:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5393,"name":"uint256","nodeType":"ElementaryTypeName","src":"1577:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5396,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1605:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5395,"name":"address","nodeType":"ElementaryTypeName","src":"1605:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5398,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1625:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5397,"name":"uint256","nodeType":"ElementaryTypeName","src":"1625:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5400,"mutability":"mutable","name":"approveMax","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1651:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5399,"name":"bool","nodeType":"ElementaryTypeName","src":"1651:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":5402,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1676:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5401,"name":"uint8","nodeType":"ElementaryTypeName","src":"1676:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":5404,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1693:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5403,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1693:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":5406,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1712:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5405,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1712:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"1464:263:12"},"returnParameters":{"id":5412,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5409,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1746:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5408,"name":"uint256","nodeType":"ElementaryTypeName","src":"1746:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5411,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":5413,"src":"1763:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5410,"name":"uint256","nodeType":"ElementaryTypeName","src":"1763:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1745:34:12"},"scope":5594,"src":"1430:350:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"6eeccb89","id":5440,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityAMBWithPermit","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5415,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":5440,"src":"1833:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5414,"name":"address","nodeType":"ElementaryTypeName","src":"1833:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5417,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":5440,"src":"1856:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5416,"name":"uint256","nodeType":"ElementaryTypeName","src":"1856:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5419,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":5440,"src":"1883:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5418,"name":"uint256","nodeType":"ElementaryTypeName","src":"1883:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5421,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":5440,"src":"1915:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5420,"name":"uint256","nodeType":"ElementaryTypeName","src":"1915:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5423,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5440,"src":"1945:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5422,"name":"address","nodeType":"ElementaryTypeName","src":"1945:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5425,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5440,"src":"1965:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5424,"name":"uint256","nodeType":"ElementaryTypeName","src":"1965:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5427,"mutability":"mutable","name":"approveMax","nodeType":"VariableDeclaration","overrides":null,"scope":5440,"src":"1991:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5426,"name":"bool","nodeType":"ElementaryTypeName","src":"1991:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":5429,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","overrides":null,"scope":5440,"src":"2016:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5428,"name":"uint8","nodeType":"ElementaryTypeName","src":"2016:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":5431,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":5440,"src":"2033:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5430,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2033:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":5433,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","overrides":null,"scope":5440,"src":"2052:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5432,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2052:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"1823:244:12"},"returnParameters":{"id":5439,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5436,"mutability":"mutable","name":"amountToken","nodeType":"VariableDeclaration","overrides":null,"scope":5440,"src":"2086:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5435,"name":"uint256","nodeType":"ElementaryTypeName","src":"2086:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5438,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":5440,"src":"2107:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5437,"name":"uint256","nodeType":"ElementaryTypeName","src":"2107:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2085:40:12"},"scope":5594,"src":"1786:340:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"38ed1739","id":5457,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactTokensForTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5442,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":5457,"src":"2175:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5441,"name":"uint256","nodeType":"ElementaryTypeName","src":"2175:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5444,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":5457,"src":"2201:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5443,"name":"uint256","nodeType":"ElementaryTypeName","src":"2201:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5447,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":5457,"src":"2231:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5445,"name":"address","nodeType":"ElementaryTypeName","src":"2231:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5446,"length":null,"nodeType":"ArrayTypeName","src":"2231:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":5449,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5457,"src":"2264:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5448,"name":"address","nodeType":"ElementaryTypeName","src":"2264:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5451,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5457,"src":"2284:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5450,"name":"uint256","nodeType":"ElementaryTypeName","src":"2284:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2165:141:12"},"returnParameters":{"id":5456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5455,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":5457,"src":"2325:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5453,"name":"uint256","nodeType":"ElementaryTypeName","src":"2325:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5454,"length":null,"nodeType":"ArrayTypeName","src":"2325:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"2324:26:12"},"scope":5594,"src":"2132:219:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"8803dbee","id":5474,"implemented":false,"kind":"function","modifiers":[],"name":"swapTokensForExactTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5469,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5459,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":5474,"src":"2400:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5458,"name":"uint256","nodeType":"ElementaryTypeName","src":"2400:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5461,"mutability":"mutable","name":"amountInMax","nodeType":"VariableDeclaration","overrides":null,"scope":5474,"src":"2427:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5460,"name":"uint256","nodeType":"ElementaryTypeName","src":"2427:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5464,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":5474,"src":"2456:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5462,"name":"address","nodeType":"ElementaryTypeName","src":"2456:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5463,"length":null,"nodeType":"ArrayTypeName","src":"2456:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":5466,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5474,"src":"2489:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5465,"name":"address","nodeType":"ElementaryTypeName","src":"2489:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5468,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5474,"src":"2509:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5467,"name":"uint256","nodeType":"ElementaryTypeName","src":"2509:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2390:141:12"},"returnParameters":{"id":5473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5472,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":5474,"src":"2550:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5470,"name":"uint256","nodeType":"ElementaryTypeName","src":"2550:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5471,"length":null,"nodeType":"ArrayTypeName","src":"2550:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"2549:26:12"},"scope":5594,"src":"2357:219:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"ac8ee3b6","id":5489,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactAMBForTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5476,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":5489,"src":"2622:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5475,"name":"uint256","nodeType":"ElementaryTypeName","src":"2622:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5479,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":5489,"src":"2652:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5477,"name":"address","nodeType":"ElementaryTypeName","src":"2652:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5478,"length":null,"nodeType":"ArrayTypeName","src":"2652:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":5481,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5489,"src":"2685:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5480,"name":"address","nodeType":"ElementaryTypeName","src":"2685:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5483,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5489,"src":"2705:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5482,"name":"uint256","nodeType":"ElementaryTypeName","src":"2705:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2612:115:12"},"returnParameters":{"id":5488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5487,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":5489,"src":"2754:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5485,"name":"uint256","nodeType":"ElementaryTypeName","src":"2754:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5486,"length":null,"nodeType":"ArrayTypeName","src":"2754:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"2753:26:12"},"scope":5594,"src":"2582:198:12","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"40d2463f","id":5506,"implemented":false,"kind":"function","modifiers":[],"name":"swapTokensForExactAMB","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5491,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":5506,"src":"2826:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5490,"name":"uint256","nodeType":"ElementaryTypeName","src":"2826:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5493,"mutability":"mutable","name":"amountInMax","nodeType":"VariableDeclaration","overrides":null,"scope":5506,"src":"2853:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5492,"name":"uint256","nodeType":"ElementaryTypeName","src":"2853:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5496,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":5506,"src":"2882:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5494,"name":"address","nodeType":"ElementaryTypeName","src":"2882:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5495,"length":null,"nodeType":"ArrayTypeName","src":"2882:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":5498,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5506,"src":"2915:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5497,"name":"address","nodeType":"ElementaryTypeName","src":"2915:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5500,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5506,"src":"2935:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5499,"name":"uint256","nodeType":"ElementaryTypeName","src":"2935:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2816:141:12"},"returnParameters":{"id":5505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5504,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":5506,"src":"2976:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5502,"name":"uint256","nodeType":"ElementaryTypeName","src":"2976:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5503,"length":null,"nodeType":"ArrayTypeName","src":"2976:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"2975:26:12"},"scope":5594,"src":"2786:216:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"e5dee373","id":5523,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactTokensForAMB","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5508,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":5523,"src":"3048:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5507,"name":"uint256","nodeType":"ElementaryTypeName","src":"3048:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5510,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":5523,"src":"3074:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5509,"name":"uint256","nodeType":"ElementaryTypeName","src":"3074:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5513,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":5523,"src":"3104:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5511,"name":"address","nodeType":"ElementaryTypeName","src":"3104:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5512,"length":null,"nodeType":"ArrayTypeName","src":"3104:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":5515,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5523,"src":"3137:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5514,"name":"address","nodeType":"ElementaryTypeName","src":"3137:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5517,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5523,"src":"3157:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5516,"name":"uint256","nodeType":"ElementaryTypeName","src":"3157:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3038:141:12"},"returnParameters":{"id":5522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5521,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":5523,"src":"3198:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5519,"name":"uint256","nodeType":"ElementaryTypeName","src":"3198:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5520,"length":null,"nodeType":"ArrayTypeName","src":"3198:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"3197:26:12"},"scope":5594,"src":"3008:216:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"ef0dc4be","id":5538,"implemented":false,"kind":"function","modifiers":[],"name":"swapAMBForExactTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5525,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":5538,"src":"3270:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5524,"name":"uint256","nodeType":"ElementaryTypeName","src":"3270:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5528,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":5538,"src":"3297:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5526,"name":"address","nodeType":"ElementaryTypeName","src":"3297:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5527,"length":null,"nodeType":"ArrayTypeName","src":"3297:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":5530,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5538,"src":"3330:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5529,"name":"address","nodeType":"ElementaryTypeName","src":"3330:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5532,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5538,"src":"3350:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5531,"name":"uint256","nodeType":"ElementaryTypeName","src":"3350:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3260:112:12"},"returnParameters":{"id":5537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5536,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":5538,"src":"3399:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5534,"name":"uint256","nodeType":"ElementaryTypeName","src":"3399:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5535,"length":null,"nodeType":"ArrayTypeName","src":"3399:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"3398:26:12"},"scope":5594,"src":"3230:195:12","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"ad615dec","id":5549,"implemented":false,"kind":"function","modifiers":[],"name":"quote","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5540,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":5549,"src":"3455:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5539,"name":"uint256","nodeType":"ElementaryTypeName","src":"3455:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5542,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","overrides":null,"scope":5549,"src":"3480:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5541,"name":"uint256","nodeType":"ElementaryTypeName","src":"3480:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5544,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","overrides":null,"scope":5549,"src":"3506:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5543,"name":"uint256","nodeType":"ElementaryTypeName","src":"3506:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3445:83:12"},"returnParameters":{"id":5548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5547,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":5549,"src":"3552:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5546,"name":"uint256","nodeType":"ElementaryTypeName","src":"3552:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3551:17:12"},"scope":5594,"src":"3431:138:12","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"054d50d4","id":5560,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountOut","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5551,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":5560,"src":"3606:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5550,"name":"uint256","nodeType":"ElementaryTypeName","src":"3606:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5553,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","overrides":null,"scope":5560,"src":"3632:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5552,"name":"uint256","nodeType":"ElementaryTypeName","src":"3632:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5555,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","overrides":null,"scope":5560,"src":"3659:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5554,"name":"uint256","nodeType":"ElementaryTypeName","src":"3659:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3596:87:12"},"returnParameters":{"id":5559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5558,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":5560,"src":"3707:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5557,"name":"uint256","nodeType":"ElementaryTypeName","src":"3707:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3706:19:12"},"scope":5594,"src":"3575:151:12","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"85f8c259","id":5571,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountIn","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5567,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5562,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":5571,"src":"3762:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5561,"name":"uint256","nodeType":"ElementaryTypeName","src":"3762:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5564,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","overrides":null,"scope":5571,"src":"3789:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5563,"name":"uint256","nodeType":"ElementaryTypeName","src":"3789:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5566,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","overrides":null,"scope":5571,"src":"3816:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5565,"name":"uint256","nodeType":"ElementaryTypeName","src":"3816:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3752:88:12"},"returnParameters":{"id":5570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5569,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":5571,"src":"3864:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5568,"name":"uint256","nodeType":"ElementaryTypeName","src":"3864:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3863:18:12"},"scope":5594,"src":"3732:150:12","stateMutability":"pure","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"d06ca61f","id":5582,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountsOut","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5573,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":5582,"src":"3911:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5572,"name":"uint256","nodeType":"ElementaryTypeName","src":"3911:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5576,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":5582,"src":"3929:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5574,"name":"address","nodeType":"ElementaryTypeName","src":"3929:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5575,"length":null,"nodeType":"ArrayTypeName","src":"3929:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"3910:43:12"},"returnParameters":{"id":5581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5580,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":5582,"src":"4001:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5578,"name":"uint256","nodeType":"ElementaryTypeName","src":"4001:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5579,"length":null,"nodeType":"ArrayTypeName","src":"4001:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"4000:26:12"},"scope":5594,"src":"3888:139:12","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"1f00ca74","id":5593,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountsIn","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5584,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":5593,"src":"4055:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5583,"name":"uint256","nodeType":"ElementaryTypeName","src":"4055:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5587,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":5593,"src":"4074:23:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5585,"name":"address","nodeType":"ElementaryTypeName","src":"4074:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5586,"length":null,"nodeType":"ArrayTypeName","src":"4074:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"4054:44:12"},"returnParameters":{"id":5592,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5591,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":5593,"src":"4146:24:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":5589,"name":"uint256","nodeType":"ElementaryTypeName","src":"4146:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5590,"length":null,"nodeType":"ArrayTypeName","src":"4146:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"4145:26:12"},"scope":5594,"src":"4033:139:12","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5595,"src":"26:4148:12"}],"src":"0:4175:12"},"id":12},"contracts/periphery/interfaces/IAstraRouter02.sol":{"ast":{"absolutePath":"contracts/periphery/interfaces/IAstraRouter02.sol","exportedSymbols":{"IAstraRouter02":[5682]},"id":5683,"nodeType":"SourceUnit","nodes":[{"id":5596,"literals":["solidity",">=","0.6",".2"],"nodeType":"PragmaDirective","src":"0:24:13"},{"absolutePath":"contracts/periphery/interfaces/IAstraRouter01.sol","file":"./IAstraRouter01.sol","id":5597,"nodeType":"ImportDirective","scope":5683,"sourceUnit":5595,"src":"26:30:13","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"arguments":null,"baseName":{"contractScope":null,"id":5598,"name":"IAstraRouter01","nodeType":"UserDefinedTypeName","referencedDeclaration":5594,"src":"86:14:13","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":5599,"nodeType":"InheritanceSpecifier","src":"86:14:13"}],"contractDependencies":[5594],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":5682,"linearizedBaseContracts":[5682,5594],"name":"IAstraRouter02","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"functionSelector":"1e0bcdae","id":5616,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityAMBSupportingFeeOnTransferTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5612,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5601,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":5616,"src":"173:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5600,"name":"address","nodeType":"ElementaryTypeName","src":"173:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5603,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":5616,"src":"196:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5602,"name":"uint256","nodeType":"ElementaryTypeName","src":"196:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5605,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":5616,"src":"223:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5604,"name":"uint256","nodeType":"ElementaryTypeName","src":"223:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5607,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":5616,"src":"255:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5606,"name":"uint256","nodeType":"ElementaryTypeName","src":"255:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5609,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5616,"src":"285:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5608,"name":"address","nodeType":"ElementaryTypeName","src":"285:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5611,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5616,"src":"305:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5610,"name":"uint256","nodeType":"ElementaryTypeName","src":"305:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"163:164:13"},"returnParameters":{"id":5615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5614,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":5616,"src":"346:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5613,"name":"uint256","nodeType":"ElementaryTypeName","src":"346:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"345:19:13"},"scope":5682,"src":"107:258:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"cf795867","id":5641,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidityAMBWithPermitSupportingFeeOnTransferTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5618,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":5641,"src":"447:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5617,"name":"address","nodeType":"ElementaryTypeName","src":"447:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5620,"mutability":"mutable","name":"liquidity","nodeType":"VariableDeclaration","overrides":null,"scope":5641,"src":"470:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5619,"name":"uint256","nodeType":"ElementaryTypeName","src":"470:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5622,"mutability":"mutable","name":"amountTokenMin","nodeType":"VariableDeclaration","overrides":null,"scope":5641,"src":"497:22:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5621,"name":"uint256","nodeType":"ElementaryTypeName","src":"497:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5624,"mutability":"mutable","name":"amountAMBMin","nodeType":"VariableDeclaration","overrides":null,"scope":5641,"src":"529:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5623,"name":"uint256","nodeType":"ElementaryTypeName","src":"529:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5626,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5641,"src":"559:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5625,"name":"address","nodeType":"ElementaryTypeName","src":"559:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5628,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5641,"src":"579:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5627,"name":"uint256","nodeType":"ElementaryTypeName","src":"579:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5630,"mutability":"mutable","name":"approveMax","nodeType":"VariableDeclaration","overrides":null,"scope":5641,"src":"605:15:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5629,"name":"bool","nodeType":"ElementaryTypeName","src":"605:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":5632,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","overrides":null,"scope":5641,"src":"630:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5631,"name":"uint8","nodeType":"ElementaryTypeName","src":"630:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":5634,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":5641,"src":"647:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5633,"name":"bytes32","nodeType":"ElementaryTypeName","src":"647:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":5636,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","overrides":null,"scope":5641,"src":"666:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":5635,"name":"bytes32","nodeType":"ElementaryTypeName","src":"666:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"437:244:13"},"returnParameters":{"id":5640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5639,"mutability":"mutable","name":"amountAMB","nodeType":"VariableDeclaration","overrides":null,"scope":5641,"src":"700:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5638,"name":"uint256","nodeType":"ElementaryTypeName","src":"700:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"699:19:13"},"scope":5682,"src":"371:348:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"5c11d795","id":5655,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5643,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":5655,"src":"797:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5642,"name":"uint256","nodeType":"ElementaryTypeName","src":"797:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5645,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":5655,"src":"823:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5644,"name":"uint256","nodeType":"ElementaryTypeName","src":"823:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5648,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":5655,"src":"853:23:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5646,"name":"address","nodeType":"ElementaryTypeName","src":"853:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5647,"length":null,"nodeType":"ArrayTypeName","src":"853:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":5650,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5655,"src":"886:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5649,"name":"address","nodeType":"ElementaryTypeName","src":"886:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5652,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5655,"src":"906:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5651,"name":"uint256","nodeType":"ElementaryTypeName","src":"906:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"787:141:13"},"returnParameters":{"id":5654,"nodeType":"ParameterList","parameters":[],"src":"937:0:13"},"scope":5682,"src":"725:213:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"c1c222df","id":5667,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactAMBForTokensSupportingFeeOnTransferTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5657,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":5667,"src":"1013:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5656,"name":"uint256","nodeType":"ElementaryTypeName","src":"1013:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5660,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":5667,"src":"1043:23:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5658,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5659,"length":null,"nodeType":"ArrayTypeName","src":"1043:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":5662,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5667,"src":"1076:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5661,"name":"address","nodeType":"ElementaryTypeName","src":"1076:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5664,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5667,"src":"1096:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5663,"name":"uint256","nodeType":"ElementaryTypeName","src":"1096:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1003:115:13"},"returnParameters":{"id":5666,"nodeType":"ParameterList","parameters":[],"src":"1135:0:13"},"scope":5682,"src":"944:192:13","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"8402322d","id":5681,"implemented":false,"kind":"function","modifiers":[],"name":"swapExactTokensForAMBSupportingFeeOnTransferTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5669,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":5681,"src":"1211:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5668,"name":"uint256","nodeType":"ElementaryTypeName","src":"1211:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5671,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":5681,"src":"1237:20:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5670,"name":"uint256","nodeType":"ElementaryTypeName","src":"1237:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5674,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":5681,"src":"1267:23:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":5672,"name":"address","nodeType":"ElementaryTypeName","src":"1267:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5673,"length":null,"nodeType":"ArrayTypeName","src":"1267:9:13","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":5676,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5681,"src":"1300:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5675,"name":"address","nodeType":"ElementaryTypeName","src":"1300:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5678,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":5681,"src":"1320:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5677,"name":"uint256","nodeType":"ElementaryTypeName","src":"1320:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1201:141:13"},"returnParameters":{"id":5680,"nodeType":"ParameterList","parameters":[],"src":"1351:0:13"},"scope":5682,"src":"1142:210:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5683,"src":"58:1296:13"}],"src":"0:1355:13"},"id":13},"contracts/periphery/interfaces/IERC20.sol":{"ast":{"absolutePath":"contracts/periphery/interfaces/IERC20.sol","exportedSymbols":{"IERC20":[5766]},"id":5767,"nodeType":"SourceUnit","nodes":[{"id":5684,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:14"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":5766,"linearizedBaseContracts":[5766],"name":"IERC20","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":null,"id":5692,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":5691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5686,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":5692,"src":"64:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5685,"name":"address","nodeType":"ElementaryTypeName","src":"64:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5688,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":5692,"src":"87:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5687,"name":"address","nodeType":"ElementaryTypeName","src":"87:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5690,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":5692,"src":"112:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5689,"name":"uint","nodeType":"ElementaryTypeName","src":"112:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"63:60:14"},"src":"49:75:14"},{"anonymous":false,"documentation":null,"id":5700,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":5699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5694,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":5700,"src":"144:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5693,"name":"address","nodeType":"ElementaryTypeName","src":"144:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5696,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5700,"src":"166:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5695,"name":"address","nodeType":"ElementaryTypeName","src":"166:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5698,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":5700,"src":"186:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5697,"name":"uint","nodeType":"ElementaryTypeName","src":"186:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"143:54:14"},"src":"129:69:14"},{"body":null,"documentation":null,"functionSelector":"06fdde03","id":5705,"implemented":false,"kind":"function","modifiers":[],"name":"name","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5701,"nodeType":"ParameterList","parameters":[],"src":"217:2:14"},"returnParameters":{"id":5704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5703,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5705,"src":"243:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5702,"name":"string","nodeType":"ElementaryTypeName","src":"243:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"242:15:14"},"scope":5766,"src":"204:54:14","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"95d89b41","id":5710,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5706,"nodeType":"ParameterList","parameters":[],"src":"278:2:14"},"returnParameters":{"id":5709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5708,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5710,"src":"304:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":5707,"name":"string","nodeType":"ElementaryTypeName","src":"304:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":null,"visibility":"internal"}],"src":"303:15:14"},"scope":5766,"src":"263:56:14","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"313ce567","id":5715,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5711,"nodeType":"ParameterList","parameters":[],"src":"341:2:14"},"returnParameters":{"id":5714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5713,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5715,"src":"367:5:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5712,"name":"uint8","nodeType":"ElementaryTypeName","src":"367:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"src":"366:7:14"},"scope":5766,"src":"324:50:14","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"18160ddd","id":5720,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5716,"nodeType":"ParameterList","parameters":[],"src":"399:2:14"},"returnParameters":{"id":5719,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5718,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5720,"src":"425:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5717,"name":"uint","nodeType":"ElementaryTypeName","src":"425:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"424:6:14"},"scope":5766,"src":"379:52:14","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"70a08231","id":5727,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5722,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":5727,"src":"455:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5721,"name":"address","nodeType":"ElementaryTypeName","src":"455:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"454:15:14"},"returnParameters":{"id":5726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5725,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5727,"src":"493:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5724,"name":"uint","nodeType":"ElementaryTypeName","src":"493:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"492:6:14"},"scope":5766,"src":"436:63:14","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"dd62ed3e","id":5736,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5729,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":5736,"src":"523:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5728,"name":"address","nodeType":"ElementaryTypeName","src":"523:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5731,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":5736,"src":"538:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5730,"name":"address","nodeType":"ElementaryTypeName","src":"538:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"522:32:14"},"returnParameters":{"id":5735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5734,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5736,"src":"578:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5733,"name":"uint","nodeType":"ElementaryTypeName","src":"578:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"577:6:14"},"scope":5766,"src":"504:80:14","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"095ea7b3","id":5745,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5741,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5738,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":5745,"src":"607:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5737,"name":"address","nodeType":"ElementaryTypeName","src":"607:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5740,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":5745,"src":"624:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5739,"name":"uint","nodeType":"ElementaryTypeName","src":"624:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"606:29:14"},"returnParameters":{"id":5744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5743,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5745,"src":"654:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5742,"name":"bool","nodeType":"ElementaryTypeName","src":"654:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"653:6:14"},"scope":5766,"src":"590:70:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"a9059cbb","id":5754,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5747,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5754,"src":"683:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5746,"name":"address","nodeType":"ElementaryTypeName","src":"683:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5749,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":5754,"src":"695:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5748,"name":"uint","nodeType":"ElementaryTypeName","src":"695:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"682:24:14"},"returnParameters":{"id":5753,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5752,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5754,"src":"725:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5751,"name":"bool","nodeType":"ElementaryTypeName","src":"725:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"724:6:14"},"scope":5766,"src":"665:66:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"23b872dd","id":5765,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5756,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":5765,"src":"758:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5755,"name":"address","nodeType":"ElementaryTypeName","src":"758:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5758,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5765,"src":"772:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5757,"name":"address","nodeType":"ElementaryTypeName","src":"772:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5760,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":5765,"src":"784:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5759,"name":"uint","nodeType":"ElementaryTypeName","src":"784:4:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"757:38:14"},"returnParameters":{"id":5764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5763,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5765,"src":"814:4:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5762,"name":"bool","nodeType":"ElementaryTypeName","src":"814:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"813:6:14"},"scope":5766,"src":"736:84:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5767,"src":"26:796:14"}],"src":"0:823:14"},"id":14},"contracts/periphery/interfaces/ISAMB.sol":{"ast":{"absolutePath":"contracts/periphery/interfaces/ISAMB.sol","exportedSymbols":{"ISAMB":[5786]},"id":5787,"nodeType":"SourceUnit","nodes":[{"id":5768,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:15"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":5786,"linearizedBaseContracts":[5786],"name":"ISAMB","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"functionSelector":"d0e30db0","id":5771,"implemented":false,"kind":"function","modifiers":[],"name":"deposit","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5769,"nodeType":"ParameterList","parameters":[],"src":"64:2:15"},"returnParameters":{"id":5770,"nodeType":"ParameterList","parameters":[],"src":"83:0:15"},"scope":5786,"src":"48:36:15","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"a9059cbb","id":5780,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5776,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5773,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5780,"src":"107:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5772,"name":"address","nodeType":"ElementaryTypeName","src":"107:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5775,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":5780,"src":"119:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5774,"name":"uint","nodeType":"ElementaryTypeName","src":"119:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"106:24:15"},"returnParameters":{"id":5779,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5778,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5780,"src":"149:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5777,"name":"bool","nodeType":"ElementaryTypeName","src":"149:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"148:6:15"},"scope":5786,"src":"89:66:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"2e1a7d4d","id":5785,"implemented":false,"kind":"function","modifiers":[],"name":"withdraw","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5782,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5785,"src":"178:4:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5781,"name":"uint","nodeType":"ElementaryTypeName","src":"178:4:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"177:6:15"},"returnParameters":{"id":5784,"nodeType":"ParameterList","parameters":[],"src":"192:0:15"},"scope":5786,"src":"160:33:15","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":5787,"src":"26:169:15"}],"src":"0:196:15"},"id":15},"contracts/periphery/interfaces/V1/IAstraV1Exchange.sol":{"ast":{"absolutePath":"contracts/periphery/interfaces/V1/IAstraV1Exchange.sol","exportedSymbols":{"IAstraV1Exchange":[5842]},"id":5843,"nodeType":"SourceUnit","nodes":[{"id":5788,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:16"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":5842,"linearizedBaseContracts":[5842],"name":"IAstraV1Exchange","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"functionSelector":"70a08231","id":5795,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5790,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":5795,"src":"78:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5789,"name":"address","nodeType":"ElementaryTypeName","src":"78:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"77:15:16"},"returnParameters":{"id":5794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5793,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5795,"src":"116:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5792,"name":"uint","nodeType":"ElementaryTypeName","src":"116:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"115:6:16"},"scope":5842,"src":"59:63:16","stateMutability":"view","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"23b872dd","id":5806,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5797,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":5806,"src":"149:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5796,"name":"address","nodeType":"ElementaryTypeName","src":"149:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5799,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":5806,"src":"163:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5798,"name":"address","nodeType":"ElementaryTypeName","src":"163:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5801,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":5806,"src":"175:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5800,"name":"uint","nodeType":"ElementaryTypeName","src":"175:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"148:38:16"},"returnParameters":{"id":5805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5804,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5806,"src":"205:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5803,"name":"bool","nodeType":"ElementaryTypeName","src":"205:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"204:6:16"},"scope":5842,"src":"127:84:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"f88bf15a","id":5821,"implemented":false,"kind":"function","modifiers":[],"name":"removeLiquidity","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5808,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5821,"src":"241:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5807,"name":"uint","nodeType":"ElementaryTypeName","src":"241:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5810,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5821,"src":"247:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5809,"name":"uint","nodeType":"ElementaryTypeName","src":"247:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5812,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5821,"src":"253:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5811,"name":"uint","nodeType":"ElementaryTypeName","src":"253:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5814,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5821,"src":"259:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5813,"name":"uint","nodeType":"ElementaryTypeName","src":"259:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"240:24:16"},"returnParameters":{"id":5820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5817,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5821,"src":"283:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5816,"name":"uint","nodeType":"ElementaryTypeName","src":"283:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5819,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5821,"src":"289:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5818,"name":"uint","nodeType":"ElementaryTypeName","src":"289:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"282:12:16"},"scope":5842,"src":"216:79:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"61862169","id":5832,"implemented":false,"kind":"function","modifiers":[],"name":"tokenToAMBSwapInput","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5823,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5832,"src":"329:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5822,"name":"uint","nodeType":"ElementaryTypeName","src":"329:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5825,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5832,"src":"335:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5824,"name":"uint","nodeType":"ElementaryTypeName","src":"335:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5827,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5832,"src":"341:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5826,"name":"uint","nodeType":"ElementaryTypeName","src":"341:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"328:18:16"},"returnParameters":{"id":5831,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5830,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5832,"src":"365:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5829,"name":"uint","nodeType":"ElementaryTypeName","src":"365:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"364:6:16"},"scope":5842,"src":"300:71:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":null,"documentation":null,"functionSelector":"b11c839c","id":5841,"implemented":false,"kind":"function","modifiers":[],"name":"AMBToTokenSwapInput","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5837,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5834,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5841,"src":"405:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5833,"name":"uint","nodeType":"ElementaryTypeName","src":"405:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5836,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5841,"src":"411:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5835,"name":"uint","nodeType":"ElementaryTypeName","src":"411:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"404:12:16"},"returnParameters":{"id":5840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5839,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5841,"src":"443:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5838,"name":"uint","nodeType":"ElementaryTypeName","src":"443:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"442:6:16"},"scope":5842,"src":"376:73:16","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":5843,"src":"26:425:16"}],"src":"0:452:16"},"id":16},"contracts/periphery/interfaces/V1/IAstraV1Factory.sol":{"ast":{"absolutePath":"contracts/periphery/interfaces/V1/IAstraV1Factory.sol","exportedSymbols":{"IAstraV1Factory":[5852]},"id":5853,"nodeType":"SourceUnit","nodes":[{"id":5844,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:17"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"interface","documentation":null,"fullyImplemented":false,"id":5852,"linearizedBaseContracts":[5852],"name":"IAstraV1Factory","nodeType":"ContractDefinition","nodes":[{"body":null,"documentation":null,"functionSelector":"06f2bf62","id":5851,"implemented":false,"kind":"function","modifiers":[],"name":"getExchange","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5846,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5851,"src":"79:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5845,"name":"address","nodeType":"ElementaryTypeName","src":"79:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"78:9:17"},"returnParameters":{"id":5850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5849,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":5851,"src":"111:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5848,"name":"address","nodeType":"ElementaryTypeName","src":"111:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"110:9:17"},"scope":5852,"src":"58:62:17","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":5853,"src":"26:96:17"}],"src":"0:123:17"},"id":17},"contracts/periphery/libraries/AstraLibrary.sol":{"ast":{"absolutePath":"contracts/periphery/libraries/AstraLibrary.sol","exportedSymbols":{"AstraLibrary":[6324]},"id":6325,"nodeType":"SourceUnit","nodes":[{"id":5854,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:18"},{"absolutePath":"contracts/core/interfaces/IAstraPair.sol","file":"../../core/interfaces/IAstraPair.sol","id":5855,"nodeType":"ImportDirective","scope":6325,"sourceUnit":319,"src":"26:46:18","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/SafeMath.sol","file":"./SafeMath.sol","id":5856,"nodeType":"ImportDirective","scope":6325,"sourceUnit":8304,"src":"74:24:18","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":null,"fullyImplemented":true,"id":6324,"linearizedBaseContracts":[6324],"name":"AstraLibrary","nodeType":"ContractDefinition","nodes":[{"id":5859,"libraryName":{"contractScope":null,"id":5857,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":8303,"src":"133:8:18","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$8303","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"127:27:18","typeName":{"id":5858,"name":"uint256","nodeType":"ElementaryTypeName","src":"146:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":5902,"nodeType":"Block","src":"395:254:18","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5871,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5861,"src":"413:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":5872,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5863,"src":"423:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"413:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"41737472614c6962726172793a204944454e544943414c5f414444524553534553","id":5874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"431:35:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_3ea6cd3a4f0316bb7742161c82a3916461e14ee7c03e56ca81e5358cbfa5117f","typeString":"literal_string \"AstraLibrary: IDENTICAL_ADDRESSES\""},"value":"AstraLibrary: IDENTICAL_ADDRESSES"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3ea6cd3a4f0316bb7742161c82a3916461e14ee7c03e56ca81e5358cbfa5117f","typeString":"literal_string \"AstraLibrary: IDENTICAL_ADDRESSES\""}],"id":5870,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"405:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"405:62:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5876,"nodeType":"ExpressionStatement","src":"405:62:18"},{"expression":{"argumentTypes":null,"id":5890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":5877,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5866,"src":"478:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5878,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5868,"src":"486:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5879,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"477:16:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5880,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5861,"src":"496:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":5881,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5863,"src":"505:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"496:15:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":5886,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5863,"src":"558:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5887,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5861,"src":"566:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5888,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"557:16:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"id":5889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"496:77:18","trueExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":5883,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5861,"src":"527:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5884,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5863,"src":"535:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":5885,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"526:16:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"src":"477:96:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5891,"nodeType":"ExpressionStatement","src":"477:96:18"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5893,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5866,"src":"591:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":5896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"609:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":5895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"601:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5894,"name":"address","nodeType":"ElementaryTypeName","src":"601:7:18","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":5897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"601:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"591:20:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"41737472614c6962726172793a205a45524f5f41444452455353","id":5899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"613:28:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_bf0806180c72b1926a7d9aa591ec55712aec36399ade1cb3c9ca85881d4ce50c","typeString":"literal_string \"AstraLibrary: ZERO_ADDRESS\""},"value":"AstraLibrary: ZERO_ADDRESS"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bf0806180c72b1926a7d9aa591ec55712aec36399ade1cb3c9ca85881d4ce50c","typeString":"literal_string \"AstraLibrary: ZERO_ADDRESS\""}],"id":5892,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"583:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":5900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"583:59:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5901,"nodeType":"ExpressionStatement","src":"583:59:18"}]},"documentation":null,"id":5903,"implemented":true,"kind":"function","modifiers":[],"name":"sortTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5861,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":5903,"src":"280:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5860,"name":"address","nodeType":"ElementaryTypeName","src":"280:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5863,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":5903,"src":"296:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5862,"name":"address","nodeType":"ElementaryTypeName","src":"296:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"279:32:18"},"returnParameters":{"id":5869,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5866,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","overrides":null,"scope":5903,"src":"359:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5865,"name":"address","nodeType":"ElementaryTypeName","src":"359:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5868,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","overrides":null,"scope":5903,"src":"375:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5867,"name":"address","nodeType":"ElementaryTypeName","src":"375:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"358:32:18"},"scope":6324,"src":"260:389:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5947,"nodeType":"Block","src":"871:500:18","statements":[{"assignments":[5915,5917],"declarations":[{"constant":false,"id":5915,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","overrides":null,"scope":5947,"src":"882:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5914,"name":"address","nodeType":"ElementaryTypeName","src":"882:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5917,"mutability":"mutable","name":"token1","nodeType":"VariableDeclaration","overrides":null,"scope":5947,"src":"898:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5916,"name":"address","nodeType":"ElementaryTypeName","src":"898:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":5922,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5919,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5907,"src":"927:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5920,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5909,"src":"935:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5918,"name":"sortTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5903,"src":"916:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":5921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"916:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"881:61:18"},{"expression":{"argumentTypes":null,"id":5945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":5923,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5912,"src":"952:4:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"ff","id":5931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1078:7:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string (contains invalid UTF-8 sequence at position 0)"},"value":null},{"argumentTypes":null,"id":5932,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5905,"src":"1111:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5936,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5915,"src":"1171:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5937,"name":"token1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5917,"src":"1179:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":5934,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1154:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1154:16:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1154:32:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5933,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1144:9:18","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1144:43:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"hexValue":"400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f","id":5940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1213:69:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5ee0565125b079b74eb499a1368ed12c7a1a4e20c8420b837dbf6950c2773da5","typeString":"literal_string (contains invalid UTF-8 sequence at position 3)"},"value":null}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9","typeString":"literal_string (contains invalid UTF-8 sequence at position 0)"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_stringliteral_5ee0565125b079b74eb499a1368ed12c7a1a4e20c8420b837dbf6950c2773da5","typeString":"literal_string (contains invalid UTF-8 sequence at position 3)"}],"expression":{"argumentTypes":null,"id":5929,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1036:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":5930,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1036:16:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":5941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1036:286:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":5928,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1005:9:18","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":5942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1005:335:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":5927,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"980:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":5926,"name":"uint256","nodeType":"ElementaryTypeName","src":"980:7:18","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":5943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"980:374:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5925,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"959:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":5924,"name":"address","nodeType":"ElementaryTypeName","src":"959:7:18","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":5944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"959:405:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"952:412:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":5946,"nodeType":"ExpressionStatement","src":"952:412:18"}]},"documentation":null,"id":5948,"implemented":true,"kind":"function","modifiers":[],"name":"pairFor","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5905,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","overrides":null,"scope":5948,"src":"764:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5904,"name":"address","nodeType":"ElementaryTypeName","src":"764:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5907,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":5948,"src":"789:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5906,"name":"address","nodeType":"ElementaryTypeName","src":"789:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5909,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":5948,"src":"813:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5908,"name":"address","nodeType":"ElementaryTypeName","src":"813:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"754:79:18"},"returnParameters":{"id":5913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5912,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":5948,"src":"857:12:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5911,"name":"address","nodeType":"ElementaryTypeName","src":"857:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"856:14:18"},"scope":6324,"src":"738:633:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5997,"nodeType":"Block","src":"1585:314:18","statements":[{"assignments":[5962,null],"declarations":[{"constant":false,"id":5962,"mutability":"mutable","name":"token0","nodeType":"VariableDeclaration","overrides":null,"scope":5997,"src":"1596:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5961,"name":"address","nodeType":"ElementaryTypeName","src":"1596:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},null],"id":5967,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5964,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5952,"src":"1627:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5965,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5954,"src":"1635:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5963,"name":"sortTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5903,"src":"1616:10:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$returns$_t_address_$_t_address_$","typeString":"function (address,address) pure returns (address,address)"}},"id":5966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1616:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_address_$","typeString":"tuple(address,address)"}},"nodeType":"VariableDeclarationStatement","src":"1595:47:18"},{"assignments":[5969,5971,null],"declarations":[{"constant":false,"id":5969,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","overrides":null,"scope":5997,"src":"1653:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5968,"name":"uint256","nodeType":"ElementaryTypeName","src":"1653:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5971,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","overrides":null,"scope":5997,"src":"1671:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5970,"name":"uint256","nodeType":"ElementaryTypeName","src":"1671:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},null],"id":5981,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":5974,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5950,"src":"1725:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5975,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5952,"src":"1734:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":5976,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5954,"src":"1742:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":5973,"name":"pairFor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5948,"src":"1717:7:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":5977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1717:32:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":5972,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"1693:10:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":5978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1693:66:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":5979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":260,"src":"1693:78:18","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"function () view external returns (uint112,uint112,uint32)"}},"id":5980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1693:80:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"tuple(uint112,uint112,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"1652:121:18"},{"expression":{"argumentTypes":null,"id":5995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":5982,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5957,"src":"1784:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5983,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5959,"src":"1794:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5984,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1783:20:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":5987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":5985,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5952,"src":"1806:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":5986,"name":"token0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5962,"src":"1816:6:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1806:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":5991,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5971,"src":"1873:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5992,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5969,"src":"1883:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5993,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1872:20:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"id":5994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1806:86:18","trueExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":5988,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5969,"src":"1838:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":5989,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5971,"src":"1848:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5990,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1837:20:18","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"1783:109:18","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":5996,"nodeType":"ExpressionStatement","src":"1783:109:18"}]},"documentation":null,"id":5998,"implemented":true,"kind":"function","modifiers":[],"name":"getReserves","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":5955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5950,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","overrides":null,"scope":5998,"src":"1456:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5949,"name":"address","nodeType":"ElementaryTypeName","src":"1456:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5952,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":5998,"src":"1481:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5951,"name":"address","nodeType":"ElementaryTypeName","src":"1481:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":5954,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":5998,"src":"1505:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":5953,"name":"address","nodeType":"ElementaryTypeName","src":"1505:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"1446:79:18"},"returnParameters":{"id":5960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5957,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","overrides":null,"scope":5998,"src":"1549:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5956,"name":"uint256","nodeType":"ElementaryTypeName","src":"1549:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":5959,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","overrides":null,"scope":5998,"src":"1567:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5958,"name":"uint256","nodeType":"ElementaryTypeName","src":"1567:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1548:36:18"},"scope":6324,"src":"1426:473:18","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6036,"nodeType":"Block","src":"2147:247:18","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6010,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6000,"src":"2165:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6011,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2175:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2165:11:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"41737472614c6962726172793a20494e53554646494349454e545f414d4f554e54","id":6013,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2178:35:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0ed2315099eebfcfe5d408ec231dfe64371bbf3938706dd94b3a4e0bad96f55b","typeString":"literal_string \"AstraLibrary: INSUFFICIENT_AMOUNT\""},"value":"AstraLibrary: INSUFFICIENT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ed2315099eebfcfe5d408ec231dfe64371bbf3938706dd94b3a4e0bad96f55b","typeString":"literal_string \"AstraLibrary: INSUFFICIENT_AMOUNT\""}],"id":6009,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2157:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2157:57:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6015,"nodeType":"ExpressionStatement","src":"2157:57:18"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6017,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6002,"src":"2245:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2256:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2245:12:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6020,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6004,"src":"2261:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2272:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2261:12:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2245:28:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"41737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459","id":6024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2287:38:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f82d6466dda7769e02006eba01a42c1eca76328ee49a63aabefd4b73cea617e2","typeString":"literal_string \"AstraLibrary: INSUFFICIENT_LIQUIDITY\""},"value":"AstraLibrary: INSUFFICIENT_LIQUIDITY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f82d6466dda7769e02006eba01a42c1eca76328ee49a63aabefd4b73cea617e2","typeString":"literal_string \"AstraLibrary: INSUFFICIENT_LIQUIDITY\""}],"id":6016,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2224:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2224:111:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6026,"nodeType":"ExpressionStatement","src":"2224:111:18"},{"expression":{"argumentTypes":null,"id":6034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6027,"name":"amountB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6007,"src":"2345:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6030,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6004,"src":"2367:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6028,"name":"amountA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6000,"src":"2355:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"2355:11:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2355:21:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":6032,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6002,"src":"2379:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2355:32:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2345:42:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6035,"nodeType":"ExpressionStatement","src":"2345:42:18"}]},"documentation":null,"id":6037,"implemented":true,"kind":"function","modifiers":[],"name":"quote","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6000,"mutability":"mutable","name":"amountA","nodeType":"VariableDeclaration","overrides":null,"scope":6037,"src":"2033:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5999,"name":"uint256","nodeType":"ElementaryTypeName","src":"2033:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6002,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","overrides":null,"scope":6037,"src":"2058:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6001,"name":"uint256","nodeType":"ElementaryTypeName","src":"2058:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6004,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","overrides":null,"scope":6037,"src":"2084:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6003,"name":"uint256","nodeType":"ElementaryTypeName","src":"2084:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2023:83:18"},"returnParameters":{"id":6008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6007,"mutability":"mutable","name":"amountB","nodeType":"VariableDeclaration","overrides":null,"scope":6037,"src":"2130:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6006,"name":"uint256","nodeType":"ElementaryTypeName","src":"2130:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2129:17:18"},"scope":6324,"src":"2009:385:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6096,"nodeType":"Block","src":"2664:436:18","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6049,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"2682:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6050,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2693:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2682:12:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"41737472614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54","id":6052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2696:41:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_841b7bde47e8579f10e572555a3a1c019e36834402fd94826281bae597740911","typeString":"literal_string \"AstraLibrary: INSUFFICIENT_INPUT_AMOUNT\""},"value":"AstraLibrary: INSUFFICIENT_INPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_841b7bde47e8579f10e572555a3a1c019e36834402fd94826281bae597740911","typeString":"literal_string \"AstraLibrary: INSUFFICIENT_INPUT_AMOUNT\""}],"id":6048,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2674:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2674:64:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6054,"nodeType":"ExpressionStatement","src":"2674:64:18"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6056,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6041,"src":"2769:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6057,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2781:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2769:13:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6059,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"2786:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2799:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2786:14:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2769:31:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"41737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459","id":6063,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2814:38:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f82d6466dda7769e02006eba01a42c1eca76328ee49a63aabefd4b73cea617e2","typeString":"literal_string \"AstraLibrary: INSUFFICIENT_LIQUIDITY\""},"value":"AstraLibrary: INSUFFICIENT_LIQUIDITY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f82d6466dda7769e02006eba01a42c1eca76328ee49a63aabefd4b73cea617e2","typeString":"literal_string \"AstraLibrary: INSUFFICIENT_LIQUIDITY\""}],"id":6055,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2748:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2748:114:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6065,"nodeType":"ExpressionStatement","src":"2748:114:18"},{"assignments":[6067],"declarations":[{"constant":false,"id":6067,"mutability":"mutable","name":"amountInWithFee","nodeType":"VariableDeclaration","overrides":null,"scope":6096,"src":"2872:23:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6066,"name":"uint256","nodeType":"ElementaryTypeName","src":"2872:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6072,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"393937","id":6070,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2911:3:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"},"value":"997"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"}],"expression":{"argumentTypes":null,"id":6068,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6039,"src":"2898:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"2898:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6071,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2898:17:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2872:43:18"},{"assignments":[6074],"declarations":[{"constant":false,"id":6074,"mutability":"mutable","name":"numerator","nodeType":"VariableDeclaration","overrides":null,"scope":6096,"src":"2925:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6073,"name":"uint256","nodeType":"ElementaryTypeName","src":"2925:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6079,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6077,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"2965:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6075,"name":"amountInWithFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6067,"src":"2945:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"2945:19:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6078,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2945:31:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2925:51:18"},{"assignments":[6081],"declarations":[{"constant":false,"id":6081,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","overrides":null,"scope":6096,"src":"2986:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6080,"name":"uint256","nodeType":"ElementaryTypeName","src":"2986:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6089,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6087,"name":"amountInWithFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6067,"src":"3032:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31303030","id":6084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3022:4:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"}],"expression":{"argumentTypes":null,"id":6082,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6041,"src":"3008:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"3008:13:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3008:19:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8252,"src":"3008:23:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3008:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2986:62:18"},{"expression":{"argumentTypes":null,"id":6094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6090,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6046,"src":"3058:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6091,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6074,"src":"3070:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":6092,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6081,"src":"3082:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3070:23:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3058:35:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6095,"nodeType":"ExpressionStatement","src":"3058:35:18"}]},"documentation":null,"id":6097,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountOut","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6039,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":6097,"src":"2544:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6038,"name":"uint256","nodeType":"ElementaryTypeName","src":"2544:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6041,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","overrides":null,"scope":6097,"src":"2570:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6040,"name":"uint256","nodeType":"ElementaryTypeName","src":"2570:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6043,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","overrides":null,"scope":6097,"src":"2597:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6042,"name":"uint256","nodeType":"ElementaryTypeName","src":"2597:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2534:87:18"},"returnParameters":{"id":6047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6046,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":6097,"src":"2645:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6045,"name":"uint256","nodeType":"ElementaryTypeName","src":"2645:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2644:19:18"},"scope":6324,"src":"2513:587:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6156,"nodeType":"Block","src":"3368:390:18","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6109,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6099,"src":"3386:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3398:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3386:13:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"41737472614c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54","id":6112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3401:42:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f2a09a8dc2cad41fc4fb7f4f29cdb4165f6c99e145d8ef047fa9a59b04029c48","typeString":"literal_string \"AstraLibrary: INSUFFICIENT_OUTPUT_AMOUNT\""},"value":"AstraLibrary: INSUFFICIENT_OUTPUT_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f2a09a8dc2cad41fc4fb7f4f29cdb4165f6c99e145d8ef047fa9a59b04029c48","typeString":"literal_string \"AstraLibrary: INSUFFICIENT_OUTPUT_AMOUNT\""}],"id":6108,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3378:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3378:66:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6114,"nodeType":"ExpressionStatement","src":"3378:66:18"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6116,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6101,"src":"3475:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3487:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3475:13:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6119,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6103,"src":"3492:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3505:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3492:14:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3475:31:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"41737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459","id":6123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3520:38:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f82d6466dda7769e02006eba01a42c1eca76328ee49a63aabefd4b73cea617e2","typeString":"literal_string \"AstraLibrary: INSUFFICIENT_LIQUIDITY\""},"value":"AstraLibrary: INSUFFICIENT_LIQUIDITY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f82d6466dda7769e02006eba01a42c1eca76328ee49a63aabefd4b73cea617e2","typeString":"literal_string \"AstraLibrary: INSUFFICIENT_LIQUIDITY\""}],"id":6115,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3454:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3454:114:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6125,"nodeType":"ExpressionStatement","src":"3454:114:18"},{"assignments":[6127],"declarations":[{"constant":false,"id":6127,"mutability":"mutable","name":"numerator","nodeType":"VariableDeclaration","overrides":null,"scope":6156,"src":"3578:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6126,"name":"uint256","nodeType":"ElementaryTypeName","src":"3578:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6135,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31303030","id":6133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3627:4:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6130,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6099,"src":"3612:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6128,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6101,"src":"3598:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"3598:13:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3598:24:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"3598:28:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6134,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3598:34:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3578:54:18"},{"assignments":[6137],"declarations":[{"constant":false,"id":6137,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","overrides":null,"scope":6156,"src":"3642:19:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6136,"name":"uint256","nodeType":"ElementaryTypeName","src":"3642:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6145,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"393937","id":6143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3694:3:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"},"value":"997"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6140,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6099,"src":"3679:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6138,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6103,"src":"3664:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"3664:14:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3664:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"3664:29:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3664:34:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3642:56:18"},{"expression":{"argumentTypes":null,"id":6154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6146,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6106,"src":"3708:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31","id":6152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3749:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6147,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6127,"src":"3720:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":6148,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6137,"src":"3732:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3720:23:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6150,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3719:25:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8252,"src":"3719:29:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3719:32:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3708:43:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6155,"nodeType":"ExpressionStatement","src":"3708:43:18"}]},"documentation":null,"id":6157,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountIn","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6099,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":6157,"src":"3248:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6098,"name":"uint256","nodeType":"ElementaryTypeName","src":"3248:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6101,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","overrides":null,"scope":6157,"src":"3275:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6100,"name":"uint256","nodeType":"ElementaryTypeName","src":"3275:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6103,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","overrides":null,"scope":6157,"src":"3302:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6102,"name":"uint256","nodeType":"ElementaryTypeName","src":"3302:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3238:88:18"},"returnParameters":{"id":6107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6106,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":6157,"src":"3350:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6105,"name":"uint256","nodeType":"ElementaryTypeName","src":"3350:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3349:18:18"},"scope":6324,"src":"3218:540:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6237,"nodeType":"Block","src":"3997:449:18","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6171,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6164,"src":"4015:4:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":6172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4015:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"32","id":6173,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4030:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4015:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"41737472614c6962726172793a20494e56414c49445f50415448","id":6175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4033:28:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_bb260a5ae72b04cb03811ea45238370e526d107d3750a2188d86b99fc78f1309","typeString":"literal_string \"AstraLibrary: INVALID_PATH\""},"value":"AstraLibrary: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bb260a5ae72b04cb03811ea45238370e526d107d3750a2188d86b99fc78f1309","typeString":"literal_string \"AstraLibrary: INVALID_PATH\""}],"id":6170,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4007:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4007:55:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6177,"nodeType":"ExpressionStatement","src":"4007:55:18"},{"expression":{"argumentTypes":null,"id":6185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6178,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"4072:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6182,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6164,"src":"4096:4:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":6183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4096:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4082:13:18","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":6179,"name":"uint256","nodeType":"ElementaryTypeName","src":"4086:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6180,"length":null,"nodeType":"ArrayTypeName","src":"4086:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":6184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4082:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"4072:36:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6186,"nodeType":"ExpressionStatement","src":"4072:36:18"},{"expression":{"argumentTypes":null,"id":6191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":6187,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"4118:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6189,"indexExpression":{"argumentTypes":null,"hexValue":"30","id":6188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4126:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4118:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":6190,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6161,"src":"4131:8:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4118:21:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6192,"nodeType":"ExpressionStatement","src":"4118:21:18"},{"body":{"id":6235,"nodeType":"Block","src":"4191:249:18","statements":[{"assignments":[6206,6208],"declarations":[{"constant":false,"id":6206,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","overrides":null,"scope":6235,"src":"4206:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6205,"name":"uint256","nodeType":"ElementaryTypeName","src":"4206:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6208,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","overrides":null,"scope":6235,"src":"4225:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6207,"name":"uint256","nodeType":"ElementaryTypeName","src":"4225:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6220,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6210,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6159,"src":"4276:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":6211,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6164,"src":"4301:4:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":6213,"indexExpression":{"argumentTypes":null,"id":6212,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6194,"src":"4306:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4301:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":6214,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6164,"src":"4326:4:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":6218,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6215,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6194,"src":"4331:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"31","id":6216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4335:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4331:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4326:11:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6209,"name":"getReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5998,"src":"4247:11:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address) view returns (uint256,uint256)"}},"id":6219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4247:104:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4205:146:18"},{"expression":{"argumentTypes":null,"id":6233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":6221,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"4365:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6225,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6224,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6222,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6194,"src":"4373:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"31","id":6223,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4377:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4373:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4365:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":6227,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6168,"src":"4395:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6229,"indexExpression":{"argumentTypes":null,"id":6228,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6194,"src":"4403:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4395:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6230,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6206,"src":"4407:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6231,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6208,"src":"4418:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6226,"name":"getAmountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6097,"src":"4382:12:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4382:47:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4365:64:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6234,"nodeType":"ExpressionStatement","src":"4365:64:18"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6196,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6194,"src":"4165:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6197,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6164,"src":"4169:4:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":6198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4169:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":6199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4183:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4169:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4165:19:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6236,"initializationExpression":{"assignments":[6194],"declarations":[{"constant":false,"id":6194,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","overrides":null,"scope":6236,"src":"4154:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6193,"name":"uint256","nodeType":"ElementaryTypeName","src":"4154:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6195,"initialValue":null,"nodeType":"VariableDeclarationStatement","src":"4154:9:18"},"loopExpression":{"expression":{"argumentTypes":null,"id":6203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"4186:3:18","subExpression":{"argumentTypes":null,"id":6202,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6194,"src":"4186:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6204,"nodeType":"ExpressionStatement","src":"4186:3:18"},"nodeType":"ForStatement","src":"4149:291:18"}]},"documentation":null,"id":6238,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsOut","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6165,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6159,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","overrides":null,"scope":6238,"src":"3869:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6158,"name":"address","nodeType":"ElementaryTypeName","src":"3869:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6161,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":6238,"src":"3894:16:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6160,"name":"uint256","nodeType":"ElementaryTypeName","src":"3894:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6164,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":6238,"src":"3920:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":6162,"name":"address","nodeType":"ElementaryTypeName","src":"3920:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6163,"length":null,"nodeType":"ArrayTypeName","src":"3920:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"3859:88:18"},"returnParameters":{"id":6169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6168,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":6238,"src":"3971:24:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6166,"name":"uint256","nodeType":"ElementaryTypeName","src":"3971:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6167,"length":null,"nodeType":"ArrayTypeName","src":"3971:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"3970:26:18"},"scope":6324,"src":"3837:609:18","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6322,"nodeType":"Block","src":"4684:470:18","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6252,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6245,"src":"4702:4:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":6253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4702:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"32","id":6254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4717:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4702:16:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"41737472614c6962726172793a20494e56414c49445f50415448","id":6256,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4720:28:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_bb260a5ae72b04cb03811ea45238370e526d107d3750a2188d86b99fc78f1309","typeString":"literal_string \"AstraLibrary: INVALID_PATH\""},"value":"AstraLibrary: INVALID_PATH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bb260a5ae72b04cb03811ea45238370e526d107d3750a2188d86b99fc78f1309","typeString":"literal_string \"AstraLibrary: INVALID_PATH\""}],"id":6251,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4694:7:18","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4694:55:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6258,"nodeType":"ExpressionStatement","src":"4694:55:18"},{"expression":{"argumentTypes":null,"id":6266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6259,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"4759:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6263,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6245,"src":"4783:4:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":6264,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4783:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"4769:13:18","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":6260,"name":"uint256","nodeType":"ElementaryTypeName","src":"4773:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6261,"length":null,"nodeType":"ArrayTypeName","src":"4773:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":6265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4769:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"src":"4759:36:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6267,"nodeType":"ExpressionStatement","src":"4759:36:18"},{"expression":{"argumentTypes":null,"id":6275,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":6268,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"4805:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6273,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6269,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"4813:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4813:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":6271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4830:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4813:18:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4805:27:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":6274,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6242,"src":"4835:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4805:39:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6276,"nodeType":"ExpressionStatement","src":"4805:39:18"},{"body":{"id":6320,"nodeType":"Block","src":"4900:248:18","statements":[{"assignments":[6291,6293],"declarations":[{"constant":false,"id":6291,"mutability":"mutable","name":"reserveIn","nodeType":"VariableDeclaration","overrides":null,"scope":6320,"src":"4915:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6290,"name":"uint256","nodeType":"ElementaryTypeName","src":"4915:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6293,"mutability":"mutable","name":"reserveOut","nodeType":"VariableDeclaration","overrides":null,"scope":6320,"src":"4934:18:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6292,"name":"uint256","nodeType":"ElementaryTypeName","src":"4934:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6305,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6295,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6240,"src":"4985:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":6296,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6245,"src":"5010:4:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":6300,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6297,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6278,"src":"5015:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":6298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5019:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5015:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5010:11:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":6301,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6245,"src":"5039:4:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":6303,"indexExpression":{"argumentTypes":null,"id":6302,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6278,"src":"5044:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5039:7:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":6294,"name":"getReserves","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5998,"src":"4956:11:18","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address) view returns (uint256,uint256)"}},"id":6304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4956:104:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4914:146:18"},{"expression":{"argumentTypes":null,"id":6318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":6306,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"5074:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6310,"indexExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6309,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6307,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6278,"src":"5082:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":6308,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5086:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5082:5:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5074:14:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":6312,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6249,"src":"5103:7:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":6314,"indexExpression":{"argumentTypes":null,"id":6313,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6278,"src":"5111:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5103:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6315,"name":"reserveIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6291,"src":"5115:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6316,"name":"reserveOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6293,"src":"5126:10:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6311,"name":"getAmountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6157,"src":"5091:11:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5091:46:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5074:63:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6319,"nodeType":"ExpressionStatement","src":"5074:63:18"}]},"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6284,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6278,"src":"4888:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4892:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4888:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6321,"initializationExpression":{"assignments":[6278],"declarations":[{"constant":false,"id":6278,"mutability":"mutable","name":"i","nodeType":"VariableDeclaration","overrides":null,"scope":6321,"src":"4859:9:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6277,"name":"uint256","nodeType":"ElementaryTypeName","src":"4859:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6283,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6279,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6245,"src":"4871:4:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":6280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"4871:11:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"hexValue":"31","id":6281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4885:1:18","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4871:15:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4859:27:18"},"loopExpression":{"expression":{"argumentTypes":null,"id":6288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"4895:3:18","subExpression":{"argumentTypes":null,"id":6287,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6278,"src":"4895:1:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6289,"nodeType":"ExpressionStatement","src":"4895:3:18"},"nodeType":"ForStatement","src":"4854:294:18"}]},"documentation":null,"id":6323,"implemented":true,"kind":"function","modifiers":[],"name":"getAmountsIn","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6240,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","overrides":null,"scope":6323,"src":"4555:15:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6239,"name":"address","nodeType":"ElementaryTypeName","src":"4555:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6242,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":6323,"src":"4580:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6241,"name":"uint256","nodeType":"ElementaryTypeName","src":"4580:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6245,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":6323,"src":"4607:21:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":6243,"name":"address","nodeType":"ElementaryTypeName","src":"4607:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":6244,"length":null,"nodeType":"ArrayTypeName","src":"4607:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"}],"src":"4545:89:18"},"returnParameters":{"id":6250,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6249,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":6323,"src":"4658:24:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":6247,"name":"uint256","nodeType":"ElementaryTypeName","src":"4658:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6248,"length":null,"nodeType":"ArrayTypeName","src":"4658:9:18","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"4657:26:18"},"scope":6324,"src":"4524:630:18","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":6325,"src":"100:5056:18"}],"src":"0:5157:18"},"id":18},"contracts/periphery/libraries/AstraLiquidityMathLibrary.sol":{"ast":{"absolutePath":"contracts/periphery/libraries/AstraLiquidityMathLibrary.sol","exportedSymbols":{"AstraLiquidityMathLibrary":[6790]},"id":6791,"nodeType":"SourceUnit","nodes":[{"id":6326,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:19"},{"absolutePath":"contracts/core/interfaces/IAstraPair.sol","file":"../../core/interfaces/IAstraPair.sol","id":6327,"nodeType":"ImportDirective","scope":6791,"sourceUnit":319,"src":"26:46:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/core/interfaces/IAstraFactory.sol","file":"../../core/interfaces/IAstraFactory.sol","id":6328,"nodeType":"ImportDirective","scope":6791,"sourceUnit":77,"src":"73:49:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/Babylonian.sol","file":"./Babylonian.sol","id":6329,"nodeType":"ImportDirective","scope":6791,"sourceUnit":7101,"src":"124:26:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/FullMath.sol","file":"./FullMath.sol","id":6330,"nodeType":"ImportDirective","scope":6791,"sourceUnit":8229,"src":"151:24:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/SafeMath.sol","file":"./SafeMath.sol","id":6331,"nodeType":"ImportDirective","scope":6791,"sourceUnit":8304,"src":"176:24:19","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/AstraLibrary.sol","file":"./AstraLibrary.sol","id":6332,"nodeType":"ImportDirective","scope":6791,"sourceUnit":6325,"src":"201:28:19","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":null,"fullyImplemented":true,"id":6790,"linearizedBaseContracts":[6790],"name":"AstraLiquidityMathLibrary","nodeType":"ContractDefinition","nodes":[{"id":6335,"libraryName":{"contractScope":null,"id":6333,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":8303,"src":"428:8:19","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$8303","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"422:27:19","typeName":{"id":6334,"name":"uint256","nodeType":"ElementaryTypeName","src":"441:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"body":{"id":6424,"nodeType":"Block","src":"744:689:19","statements":[{"expression":{"argumentTypes":null,"id":6359,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6350,"name":"aToB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"754:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6358,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6353,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6341,"src":"777:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6354,"name":"truePriceTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"787:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6355,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6343,"src":"804:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6351,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8228,"src":"761:8:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8228_$","typeString":"type(library FullMath)"}},"id":6352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":8227,"src":"761:15:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"761:52:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":6357,"name":"truePriceTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"816:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"761:70:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"754:77:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6360,"nodeType":"ExpressionStatement","src":"754:77:19"},{"assignments":[6362],"declarations":[{"constant":false,"id":6362,"mutability":"mutable","name":"invariant","nodeType":"VariableDeclaration","overrides":null,"scope":6424,"src":"842:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6361,"name":"uint256","nodeType":"ElementaryTypeName","src":"842:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6367,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6365,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6343,"src":"875:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6363,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6341,"src":"862:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"862:12:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"862:22:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"842:42:19"},{"assignments":[6369],"declarations":[{"constant":false,"id":6369,"mutability":"mutable","name":"leftSide","nodeType":"VariableDeclaration","overrides":null,"scope":6424,"src":"895:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6368,"name":"uint256","nodeType":"ElementaryTypeName","src":"895:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6392,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31303030","id":6376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"990:4:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"}],"expression":{"argumentTypes":null,"id":6374,"name":"invariant","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6362,"src":"976:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"976:13:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"976:19:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"condition":{"argumentTypes":null,"id":6378,"name":"aToB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"1013:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":6380,"name":"truePriceTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"1038:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1013:40:19","trueExpression":{"argumentTypes":null,"id":6379,"name":"truePriceTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"1020:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"393937","id":6388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1118:3:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"},"value":"997"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"}],"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"condition":{"argumentTypes":null,"id":6382,"name":"aToB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"1072:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":6384,"name":"truePriceTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6337,"src":"1097:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1072:40:19","trueExpression":{"argumentTypes":null,"id":6383,"name":"truePriceTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6339,"src":"1079:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6386,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1071:42:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"1071:46:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1071:51:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6372,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8228,"src":"943:8:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8228_$","typeString":"type(library FullMath)"}},"id":6373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":8227,"src":"943:15:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"943:193:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6370,"name":"Babylonian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"914:10:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Babylonian_$7100_$","typeString":"type(library Babylonian)"}},"id":6371,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":7099,"src":"914:15:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":6391,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"914:232:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"895:251:19"},{"assignments":[6394],"declarations":[{"constant":false,"id":6394,"mutability":"mutable","name":"rightSide","nodeType":"VariableDeclaration","overrides":null,"scope":6424,"src":"1156:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6393,"name":"uint256","nodeType":"ElementaryTypeName","src":"1156:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6408,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"condition":{"argumentTypes":null,"id":6395,"name":"aToB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6346,"src":"1177:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31303030","id":6402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1218:4:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"}],"expression":{"argumentTypes":null,"id":6400,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6343,"src":"1205:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"1205:12:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1205:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1177:46:19","trueExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31303030","id":6398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1197:4:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"}],"expression":{"argumentTypes":null,"id":6396,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6341,"src":"1184:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"1184:12:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1184:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6405,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1176:48:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"hexValue":"393937","id":6406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1227:3:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_997_by_1","typeString":"int_const 997"},"value":"997"},"src":"1176:54:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1156:74:19"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6409,"name":"leftSide","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6369,"src":"1245:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":6410,"name":"rightSide","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6394,"src":"1256:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1245:20:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6416,"nodeType":"IfStatement","src":"1241:43:19","trueBody":{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"hexValue":"66616c7365","id":6412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1275:5:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"argumentTypes":null,"hexValue":"30","id":6413,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1282:1:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":6414,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1274:10:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":6349,"id":6415,"nodeType":"Return","src":"1267:17:19"}},{"expression":{"argumentTypes":null,"id":6422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6417,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6348,"src":"1392:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6420,"name":"rightSide","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6394,"src":"1416:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6418,"name":"leftSide","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6369,"src":"1403:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"1403:12:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1403:23:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1392:34:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6423,"nodeType":"ExpressionStatement","src":"1392:34:19"}]},"documentation":null,"id":6425,"implemented":true,"kind":"function","modifiers":[],"name":"computeProfitMaximizingTrade","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6337,"mutability":"mutable","name":"truePriceTokenA","nodeType":"VariableDeclaration","overrides":null,"scope":6425,"src":"577:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6336,"name":"uint256","nodeType":"ElementaryTypeName","src":"577:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6339,"mutability":"mutable","name":"truePriceTokenB","nodeType":"VariableDeclaration","overrides":null,"scope":6425,"src":"610:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6338,"name":"uint256","nodeType":"ElementaryTypeName","src":"610:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6341,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","overrides":null,"scope":6425,"src":"643:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6340,"name":"uint256","nodeType":"ElementaryTypeName","src":"643:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6343,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","overrides":null,"scope":6425,"src":"669:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6342,"name":"uint256","nodeType":"ElementaryTypeName","src":"669:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"567:124:19"},"returnParameters":{"id":6349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6346,"mutability":"mutable","name":"aToB","nodeType":"VariableDeclaration","overrides":null,"scope":6425,"src":"715:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6345,"name":"bool","nodeType":"ElementaryTypeName","src":"715:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":6348,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":6425,"src":"726:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6347,"name":"uint256","nodeType":"ElementaryTypeName","src":"726:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"714:29:19"},"scope":6790,"src":"530:903:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6522,"nodeType":"Block","src":"1809:906:19","statements":[{"expression":{"argumentTypes":null,"id":6451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":6442,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6438,"src":"1866:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6443,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6440,"src":"1876:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6444,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"1865:20:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6447,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6427,"src":"1913:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":6448,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6429,"src":"1922:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":6449,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6431,"src":"1930:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":6445,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"1888:12:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":6446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":5998,"src":"1888:24:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address) view returns (uint256,uint256)"}},"id":6450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1888:49:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"1865:72:19","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6452,"nodeType":"ExpressionStatement","src":"1865:72:19"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6456,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6454,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6438,"src":"1956:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6455,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1967:1:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1956:12:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6457,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6440,"src":"1972:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1983:1:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1972:12:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1956:28:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"41737472614172626974726167654c6962726172793a205a45524f5f504149525f5245534552564553","id":6461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1986:43:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_28ed6e575d280a9da063b293d3b81ff94b8d7b66f0614cbf8136b82d0ca602a5","typeString":"literal_string \"AstraArbitrageLibrary: ZERO_PAIR_RESERVES\""},"value":"AstraArbitrageLibrary: ZERO_PAIR_RESERVES"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28ed6e575d280a9da063b293d3b81ff94b8d7b66f0614cbf8136b82d0ca602a5","typeString":"literal_string \"AstraArbitrageLibrary: ZERO_PAIR_RESERVES\""}],"id":6453,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1948:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1948:82:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6463,"nodeType":"ExpressionStatement","src":"1948:82:19"},{"assignments":[6465,6467],"declarations":[{"constant":false,"id":6465,"mutability":"mutable","name":"aToB","nodeType":"VariableDeclaration","overrides":null,"scope":6522,"src":"2108:9:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6464,"name":"bool","nodeType":"ElementaryTypeName","src":"2108:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":6467,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":6522,"src":"2119:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6466,"name":"uint256","nodeType":"ElementaryTypeName","src":"2119:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6474,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6469,"name":"truePriceTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6433,"src":"2168:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6470,"name":"truePriceTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6435,"src":"2185:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6471,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6438,"src":"2202:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6472,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6440,"src":"2212:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6468,"name":"computeProfitMaximizingTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6425,"src":"2139:28:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256) pure returns (bool,uint256)"}},"id":6473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2139:82:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"2107:114:19"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6475,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6467,"src":"2236:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2248:1:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2236:13:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6483,"nodeType":"IfStatement","src":"2232:71:19","trueBody":{"id":6482,"nodeType":"Block","src":"2251:52:19","statements":[{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":6478,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6438,"src":"2273:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6479,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6440,"src":"2283:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6480,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2272:20:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":6441,"id":6481,"nodeType":"Return","src":"2265:27:19"}]}},{"condition":{"argumentTypes":null,"id":6484,"name":"aToB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6465,"src":"2365:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":6520,"nodeType":"Block","src":"2543:166:19","statements":[{"assignments":[6504],"declarations":[{"constant":false,"id":6504,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":6520,"src":"2557:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6503,"name":"uint","nodeType":"ElementaryTypeName","src":"2557:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6511,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6507,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6467,"src":"2600:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6508,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6440,"src":"2610:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6509,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6438,"src":"2620:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6505,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"2574:12:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":6506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountOut","nodeType":"MemberAccess","referencedDeclaration":6097,"src":"2574:25:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2574:55:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2557:72:19"},{"expression":{"argumentTypes":null,"id":6514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6512,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6440,"src":"2643:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"id":6513,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6467,"src":"2655:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2643:20:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6515,"nodeType":"ExpressionStatement","src":"2643:20:19"},{"expression":{"argumentTypes":null,"id":6518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6516,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6438,"src":"2677:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"id":6517,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6504,"src":"2689:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2677:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6519,"nodeType":"ExpressionStatement","src":"2677:21:19"}]},"id":6521,"nodeType":"IfStatement","src":"2361:348:19","trueBody":{"id":6502,"nodeType":"Block","src":"2371:166:19","statements":[{"assignments":[6486],"declarations":[{"constant":false,"id":6486,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":6502,"src":"2385:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6485,"name":"uint","nodeType":"ElementaryTypeName","src":"2385:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6493,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6489,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6467,"src":"2428:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6490,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6438,"src":"2438:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6491,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6440,"src":"2448:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6487,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"2402:12:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":6488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getAmountOut","nodeType":"MemberAccess","referencedDeclaration":6097,"src":"2402:25:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2402:55:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2385:72:19"},{"expression":{"argumentTypes":null,"id":6496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6494,"name":"reserveA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6438,"src":"2471:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"id":6495,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6467,"src":"2483:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2471:20:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6497,"nodeType":"ExpressionStatement","src":"2471:20:19"},{"expression":{"argumentTypes":null,"id":6500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6498,"name":"reserveB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6440,"src":"2505:8:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"id":6499,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6486,"src":"2517:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2505:21:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6501,"nodeType":"ExpressionStatement","src":"2505:21:19"}]}}]},"documentation":null,"id":6523,"implemented":true,"kind":"function","modifiers":[],"name":"getReservesAfterArbitrage","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6427,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","overrides":null,"scope":6523,"src":"1614:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6426,"name":"address","nodeType":"ElementaryTypeName","src":"1614:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6429,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":6523,"src":"1639:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6428,"name":"address","nodeType":"ElementaryTypeName","src":"1639:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6431,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":6523,"src":"1663:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6430,"name":"address","nodeType":"ElementaryTypeName","src":"1663:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6433,"mutability":"mutable","name":"truePriceTokenA","nodeType":"VariableDeclaration","overrides":null,"scope":6523,"src":"1687:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6432,"name":"uint256","nodeType":"ElementaryTypeName","src":"1687:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6435,"mutability":"mutable","name":"truePriceTokenB","nodeType":"VariableDeclaration","overrides":null,"scope":6523,"src":"1720:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6434,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1604:145:19"},"returnParameters":{"id":6441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6438,"mutability":"mutable","name":"reserveA","nodeType":"VariableDeclaration","overrides":null,"scope":6523,"src":"1773:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6437,"name":"uint256","nodeType":"ElementaryTypeName","src":"1773:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6440,"mutability":"mutable","name":"reserveB","nodeType":"VariableDeclaration","overrides":null,"scope":6523,"src":"1791:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6439,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1772:36:19"},"scope":6790,"src":"1570:1145:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6622,"nodeType":"Block","src":"3050:650:19","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6542,"name":"feeOn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6533,"src":"3064:5:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6543,"name":"kLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6535,"src":"3073:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3081:1:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3073:9:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3064:18:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6607,"nodeType":"IfStatement","src":"3060:525:19","trueBody":{"id":6606,"nodeType":"Block","src":"3084:501:19","statements":[{"assignments":[6548],"declarations":[{"constant":false,"id":6548,"mutability":"mutable","name":"rootK","nodeType":"VariableDeclaration","overrides":null,"scope":6606,"src":"3098:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6547,"name":"uint","nodeType":"ElementaryTypeName","src":"3098:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6556,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6553,"name":"reservesB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6527,"src":"3141:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6551,"name":"reservesA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"3127:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"3127:13:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3127:24:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6549,"name":"Babylonian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"3111:10:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Babylonian_$7100_$","typeString":"type(library Babylonian)"}},"id":6550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":7099,"src":"3111:15:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":6555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3111:41:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3098:54:19"},{"assignments":[6558],"declarations":[{"constant":false,"id":6558,"mutability":"mutable","name":"rootKLast","nodeType":"VariableDeclaration","overrides":null,"scope":6606,"src":"3166:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6557,"name":"uint","nodeType":"ElementaryTypeName","src":"3166:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6563,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6561,"name":"kLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6535,"src":"3199:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6559,"name":"Babylonian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"3183:10:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Babylonian_$7100_$","typeString":"type(library Babylonian)"}},"id":6560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":7099,"src":"3183:15:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":6562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3183:22:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3166:39:19"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6564,"name":"rootK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6548,"src":"3223:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":6565,"name":"rootKLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"3231:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3223:17:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6605,"nodeType":"IfStatement","src":"3219:356:19","trueBody":{"id":6604,"nodeType":"Block","src":"3242:333:19","statements":[{"assignments":[6568],"declarations":[{"constant":false,"id":6568,"mutability":"mutable","name":"numerator1","nodeType":"VariableDeclaration","overrides":null,"scope":6604,"src":"3260:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6567,"name":"uint","nodeType":"ElementaryTypeName","src":"3260:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6570,"initialValue":{"argumentTypes":null,"id":6569,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6529,"src":"3278:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3260:29:19"},{"assignments":[6572],"declarations":[{"constant":false,"id":6572,"mutability":"mutable","name":"numerator2","nodeType":"VariableDeclaration","overrides":null,"scope":6604,"src":"3307:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6571,"name":"uint","nodeType":"ElementaryTypeName","src":"3307:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6577,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6575,"name":"rootKLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"3335:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6573,"name":"rootK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6548,"src":"3325:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"3325:9:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6576,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3325:20:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3307:38:19"},{"assignments":[6579],"declarations":[{"constant":false,"id":6579,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","overrides":null,"scope":6604,"src":"3363:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6578,"name":"uint","nodeType":"ElementaryTypeName","src":"3363:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6587,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6585,"name":"rootKLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6558,"src":"3399:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"35","id":6582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3392:1:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"expression":{"argumentTypes":null,"id":6580,"name":"rootK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6548,"src":"3382:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"3382:9:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3382:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8252,"src":"3382:16:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6586,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3382:27:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3363:46:19"},{"assignments":[6589],"declarations":[{"constant":false,"id":6589,"mutability":"mutable","name":"feeLiquidity","nodeType":"VariableDeclaration","overrides":null,"scope":6604,"src":"3427:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6588,"name":"uint","nodeType":"ElementaryTypeName","src":"3427:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6596,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6592,"name":"numerator1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6568,"src":"3463:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6593,"name":"numerator2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6572,"src":"3475:10:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6594,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6579,"src":"3487:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6590,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8228,"src":"3447:8:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8228_$","typeString":"type(library FullMath)"}},"id":6591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":8227,"src":"3447:15:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":6595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3447:52:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3427:72:19"},{"expression":{"argumentTypes":null,"id":6602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6597,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6529,"src":"3517:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6600,"name":"feeLiquidity","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6589,"src":"3547:12:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6598,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6529,"src":"3531:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8252,"src":"3531:15:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3531:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3517:43:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6603,"nodeType":"ExpressionStatement","src":"3517:43:19"}]}}]}},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6610,"name":"liquidityAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6531,"src":"3616:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6608,"name":"reservesA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6525,"src":"3602:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"3602:13:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3602:30:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":6612,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6529,"src":"3635:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3602:44:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6616,"name":"liquidityAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6531,"src":"3662:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":6614,"name":"reservesB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6527,"src":"3648:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":8302,"src":"3648:13:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":6617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3648:30:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":6618,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6529,"src":"3681:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3648:44:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":6620,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3601:92:19","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":6541,"id":6621,"nodeType":"Return","src":"3594:99:19"}]},"documentation":null,"id":6623,"implemented":true,"kind":"function","modifiers":[],"name":"computeLiquidityValue","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6536,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6525,"mutability":"mutable","name":"reservesA","nodeType":"VariableDeclaration","overrides":null,"scope":6623,"src":"2830:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6524,"name":"uint256","nodeType":"ElementaryTypeName","src":"2830:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6527,"mutability":"mutable","name":"reservesB","nodeType":"VariableDeclaration","overrides":null,"scope":6623,"src":"2857:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6526,"name":"uint256","nodeType":"ElementaryTypeName","src":"2857:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6529,"mutability":"mutable","name":"totalSupply","nodeType":"VariableDeclaration","overrides":null,"scope":6623,"src":"2884:19:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6528,"name":"uint256","nodeType":"ElementaryTypeName","src":"2884:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6531,"mutability":"mutable","name":"liquidityAmount","nodeType":"VariableDeclaration","overrides":null,"scope":6623,"src":"2913:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6530,"name":"uint256","nodeType":"ElementaryTypeName","src":"2913:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6533,"mutability":"mutable","name":"feeOn","nodeType":"VariableDeclaration","overrides":null,"scope":6623,"src":"2946:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6532,"name":"bool","nodeType":"ElementaryTypeName","src":"2946:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":6535,"mutability":"mutable","name":"kLast","nodeType":"VariableDeclaration","overrides":null,"scope":6623,"src":"2966:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6534,"name":"uint","nodeType":"ElementaryTypeName","src":"2966:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2820:162:19"},"returnParameters":{"id":6541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6538,"mutability":"mutable","name":"tokenAAmount","nodeType":"VariableDeclaration","overrides":null,"scope":6623,"src":"3006:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6537,"name":"uint256","nodeType":"ElementaryTypeName","src":"3006:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6540,"mutability":"mutable","name":"tokenBAmount","nodeType":"VariableDeclaration","overrides":null,"scope":6623,"src":"3028:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6539,"name":"uint256","nodeType":"ElementaryTypeName","src":"3028:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3005:44:19"},"scope":6790,"src":"2790:910:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6697,"nodeType":"Block","src":"4168:457:19","statements":[{"assignments":[6639,6641],"declarations":[{"constant":false,"id":6639,"mutability":"mutable","name":"reservesA","nodeType":"VariableDeclaration","overrides":null,"scope":6697,"src":"4179:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6638,"name":"uint256","nodeType":"ElementaryTypeName","src":"4179:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6641,"mutability":"mutable","name":"reservesB","nodeType":"VariableDeclaration","overrides":null,"scope":6697,"src":"4198:17:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6640,"name":"uint256","nodeType":"ElementaryTypeName","src":"4198:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6648,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6644,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"4244:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":6645,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6627,"src":"4253:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":6646,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6629,"src":"4261:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":6642,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"4219:12:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":6643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":5998,"src":"4219:24:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address) view returns (uint256,uint256)"}},"id":6647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4219:49:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4178:90:19"},{"assignments":[6650],"declarations":[{"constant":false,"id":6650,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":6697,"src":"4278:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"},"typeName":{"contractScope":null,"id":6649,"name":"IAstraPair","nodeType":"UserDefinedTypeName","referencedDeclaration":318,"src":"4278:10:19","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"value":null,"visibility":"internal"}],"id":6659,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6654,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"4328:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":6655,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6627,"src":"4337:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":6656,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6629,"src":"4345:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":6652,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"4307:12:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":6653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"4307:20:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":6657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4307:45:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6651,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"4296:10:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":6658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4296:57:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"nodeType":"VariableDeclarationStatement","src":"4278:75:19"},{"assignments":[6661],"declarations":[{"constant":false,"id":6661,"mutability":"mutable","name":"feeOn","nodeType":"VariableDeclaration","overrides":null,"scope":6697,"src":"4363:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6660,"name":"bool","nodeType":"ElementaryTypeName","src":"4363:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"id":6672,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6663,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6625,"src":"4390:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6662,"name":"IAstraFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"4376:13:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraFactory_$76_$","typeString":"type(contract IAstraFactory)"}},"id":6664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4376:22:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraFactory_$76","typeString":"contract IAstraFactory"}},"id":6665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feeTo","nodeType":"MemberAccess","referencedDeclaration":30,"src":"4376:28:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":6666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4376:30:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":6669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4418:1:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6668,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4410:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6667,"name":"address","nodeType":"ElementaryTypeName","src":"4410:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":6670,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4410:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"4376:44:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"4363:57:19"},{"assignments":[6674],"declarations":[{"constant":false,"id":6674,"mutability":"mutable","name":"kLast","nodeType":"VariableDeclaration","overrides":null,"scope":6697,"src":"4430:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6673,"name":"uint","nodeType":"ElementaryTypeName","src":"4430:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6681,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"id":6675,"name":"feeOn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6661,"src":"4443:5:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"hexValue":"30","id":6679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4466:1:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":6680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"4443:24:19","trueExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":6676,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6650,"src":"4451:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":6677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"kLast","nodeType":"MemberAccess","referencedDeclaration":275,"src":"4451:10:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":6678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4451:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4430:37:19"},{"assignments":[6683],"declarations":[{"constant":false,"id":6683,"mutability":"mutable","name":"totalSupply","nodeType":"VariableDeclaration","overrides":null,"scope":6697,"src":"4477:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6682,"name":"uint","nodeType":"ElementaryTypeName","src":"4477:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6687,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":6684,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6650,"src":"4496:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":6685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":114,"src":"4496:16:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":6686,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4496:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4477:37:19"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6689,"name":"reservesA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6639,"src":"4553:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6690,"name":"reservesB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6641,"src":"4564:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6691,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6683,"src":"4575:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6692,"name":"liquidityAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6631,"src":"4588:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6693,"name":"feeOn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6661,"src":"4605:5:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":6694,"name":"kLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6674,"src":"4612:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6688,"name":"computeLiquidityValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6623,"src":"4531:21:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256,bool,uint256) pure returns (uint256,uint256)"}},"id":6695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4531:87:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":6637,"id":6696,"nodeType":"Return","src":"4524:94:19"}]},"documentation":null,"id":6698,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityValue","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6625,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","overrides":null,"scope":6698,"src":"3998:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6624,"name":"address","nodeType":"ElementaryTypeName","src":"3998:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6627,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":6698,"src":"4023:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6626,"name":"address","nodeType":"ElementaryTypeName","src":"4023:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6629,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":6698,"src":"4047:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6628,"name":"address","nodeType":"ElementaryTypeName","src":"4047:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6631,"mutability":"mutable","name":"liquidityAmount","nodeType":"VariableDeclaration","overrides":null,"scope":6698,"src":"4071:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6630,"name":"uint256","nodeType":"ElementaryTypeName","src":"4071:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"3988:112:19"},"returnParameters":{"id":6637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6634,"mutability":"mutable","name":"tokenAAmount","nodeType":"VariableDeclaration","overrides":null,"scope":6698,"src":"4124:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6633,"name":"uint256","nodeType":"ElementaryTypeName","src":"4124:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6636,"mutability":"mutable","name":"tokenBAmount","nodeType":"VariableDeclaration","overrides":null,"scope":6698,"src":"4146:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6635,"name":"uint256","nodeType":"ElementaryTypeName","src":"4146:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4123:44:19"},"scope":6790,"src":"3962:663:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6788,"nodeType":"Block","src":"5166:653:19","statements":[{"assignments":[6718],"declarations":[{"constant":false,"id":6718,"mutability":"mutable","name":"feeOn","nodeType":"VariableDeclaration","overrides":null,"scope":6788,"src":"5176:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6717,"name":"bool","nodeType":"ElementaryTypeName","src":"5176:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"id":6729,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":6728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6720,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"5203:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6719,"name":"IAstraFactory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":76,"src":"5189:13:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraFactory_$76_$","typeString":"type(contract IAstraFactory)"}},"id":6721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5189:22:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraFactory_$76","typeString":"contract IAstraFactory"}},"id":6722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feeTo","nodeType":"MemberAccess","referencedDeclaration":30,"src":"5189:28:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":6723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5189:30:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":6726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5231:1:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":6725,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5223:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":6724,"name":"address","nodeType":"ElementaryTypeName","src":"5223:7:19","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":6727,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5223:10:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"5189:44:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"5176:57:19"},{"assignments":[6731],"declarations":[{"constant":false,"id":6731,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":6788,"src":"5243:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"},"typeName":{"contractScope":null,"id":6730,"name":"IAstraPair","nodeType":"UserDefinedTypeName","referencedDeclaration":318,"src":"5243:10:19","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"value":null,"visibility":"internal"}],"id":6740,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6735,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"5293:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":6736,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6702,"src":"5302:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":6737,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6704,"src":"5310:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":6733,"name":"AstraLibrary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6324,"src":"5272:12:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AstraLibrary_$6324_$","typeString":"type(library AstraLibrary)"}},"id":6734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairFor","nodeType":"MemberAccess","referencedDeclaration":5948,"src":"5272:20:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$","typeString":"function (address,address,address) pure returns (address)"}},"id":6738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5272:45:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6732,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"5261:10:19","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":6739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5261:57:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"nodeType":"VariableDeclarationStatement","src":"5243:75:19"},{"assignments":[6742],"declarations":[{"constant":false,"id":6742,"mutability":"mutable","name":"kLast","nodeType":"VariableDeclaration","overrides":null,"scope":6788,"src":"5328:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6741,"name":"uint","nodeType":"ElementaryTypeName","src":"5328:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6749,"initialValue":{"argumentTypes":null,"condition":{"argumentTypes":null,"id":6743,"name":"feeOn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6718,"src":"5341:5:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"hexValue":"30","id":6747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5364:1:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":6748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5341:24:19","trueExpression":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":6744,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6731,"src":"5349:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":6745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"kLast","nodeType":"MemberAccess","referencedDeclaration":275,"src":"5349:10:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":6746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5349:12:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5328:37:19"},{"assignments":[6751],"declarations":[{"constant":false,"id":6751,"mutability":"mutable","name":"totalSupply","nodeType":"VariableDeclaration","overrides":null,"scope":6788,"src":"5375:16:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6750,"name":"uint","nodeType":"ElementaryTypeName","src":"5375:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6755,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"id":6752,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6731,"src":"5394:4:19","typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":6753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":114,"src":"5394:16:19","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":6754,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5394:18:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5375:37:19"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":6763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6757,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6751,"src":"5480:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":6758,"name":"liquidityAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"5495:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5480:30:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6760,"name":"liquidityAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"5514:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5532:1:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5514:19:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5480:53:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"436f6d707574654c697175696469747956616c75653a204c49515549444954595f414d4f554e54","id":6764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5535:41:19","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_eba3c4b4bce1b370b996e883c442849cfe288700c2faa2de6af84d237654e6b8","typeString":"literal_string \"ComputeLiquidityValue: LIQUIDITY_AMOUNT\""},"value":"ComputeLiquidityValue: LIQUIDITY_AMOUNT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eba3c4b4bce1b370b996e883c442849cfe288700c2faa2de6af84d237654e6b8","typeString":"literal_string \"ComputeLiquidityValue: LIQUIDITY_AMOUNT\""}],"id":6756,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5472:7:19","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":6765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5472:105:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":6766,"nodeType":"ExpressionStatement","src":"5472:105:19"},{"assignments":[6768,6770],"declarations":[{"constant":false,"id":6768,"mutability":"mutable","name":"reservesA","nodeType":"VariableDeclaration","overrides":null,"scope":6788,"src":"5589:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6767,"name":"uint","nodeType":"ElementaryTypeName","src":"5589:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6770,"mutability":"mutable","name":"reservesB","nodeType":"VariableDeclaration","overrides":null,"scope":6788,"src":"5605:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6769,"name":"uint","nodeType":"ElementaryTypeName","src":"5605:4:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6778,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6772,"name":"factory","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6700,"src":"5649:7:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":6773,"name":"tokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6702,"src":"5658:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":6774,"name":"tokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6704,"src":"5666:6:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":6775,"name":"truePriceTokenA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6706,"src":"5674:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6776,"name":"truePriceTokenB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6708,"src":"5691:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6771,"name":"getReservesAfterArbitrage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6523,"src":"5623:25:19","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,address,address,uint256,uint256) view returns (uint256,uint256)"}},"id":6777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5623:84:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5588:119:19"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6780,"name":"reservesA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6768,"src":"5747:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6781,"name":"reservesB","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6770,"src":"5758:9:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6782,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6751,"src":"5769:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6783,"name":"liquidityAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6710,"src":"5782:15:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":6784,"name":"feeOn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6718,"src":"5799:5:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"id":6785,"name":"kLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6742,"src":"5806:5:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6779,"name":"computeLiquidityValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6623,"src":"5725:21:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256,uint256,uint256,bool,uint256) pure returns (uint256,uint256)"}},"id":6786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5725:87:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"functionReturnParameters":6716,"id":6787,"nodeType":"Return","src":"5718:94:19"}]},"documentation":null,"id":6789,"implemented":true,"kind":"function","modifiers":[],"name":"getLiquidityValueAfterArbitrageToPrice","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6700,"mutability":"mutable","name":"factory","nodeType":"VariableDeclaration","overrides":null,"scope":6789,"src":"4908:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6699,"name":"address","nodeType":"ElementaryTypeName","src":"4908:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6702,"mutability":"mutable","name":"tokenA","nodeType":"VariableDeclaration","overrides":null,"scope":6789,"src":"4933:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6701,"name":"address","nodeType":"ElementaryTypeName","src":"4933:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6704,"mutability":"mutable","name":"tokenB","nodeType":"VariableDeclaration","overrides":null,"scope":6789,"src":"4957:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6703,"name":"address","nodeType":"ElementaryTypeName","src":"4957:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":6706,"mutability":"mutable","name":"truePriceTokenA","nodeType":"VariableDeclaration","overrides":null,"scope":6789,"src":"4981:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6705,"name":"uint256","nodeType":"ElementaryTypeName","src":"4981:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6708,"mutability":"mutable","name":"truePriceTokenB","nodeType":"VariableDeclaration","overrides":null,"scope":6789,"src":"5014:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6707,"name":"uint256","nodeType":"ElementaryTypeName","src":"5014:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6710,"mutability":"mutable","name":"liquidityAmount","nodeType":"VariableDeclaration","overrides":null,"scope":6789,"src":"5047:23:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6709,"name":"uint256","nodeType":"ElementaryTypeName","src":"5047:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4898:178:19"},"returnParameters":{"id":6716,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6713,"mutability":"mutable","name":"tokenAAmount","nodeType":"VariableDeclaration","overrides":null,"scope":6789,"src":"5109:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6712,"name":"uint256","nodeType":"ElementaryTypeName","src":"5109:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6715,"mutability":"mutable","name":"tokenBAmount","nodeType":"VariableDeclaration","overrides":null,"scope":6789,"src":"5139:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6714,"name":"uint256","nodeType":"ElementaryTypeName","src":"5139:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"5099:66:19"},"scope":6790,"src":"4851:968:19","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":6791,"src":"382:5439:19"}],"src":"0:5822:19"},"id":19},"contracts/periphery/libraries/AstraOracleLibrary.sol":{"ast":{"absolutePath":"contracts/periphery/libraries/AstraOracleLibrary.sol","exportedSymbols":{"AstraOracleLibrary":[6897]},"id":6898,"nodeType":"SourceUnit","nodes":[{"id":6792,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"0:24:20"},{"absolutePath":"contracts/core/interfaces/IAstraPair.sol","file":"../../core/interfaces/IAstraPair.sol","id":6793,"nodeType":"ImportDirective","scope":6898,"sourceUnit":319,"src":"26:46:20","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/FixedPoint.sol","file":"./FixedPoint.sol","id":6794,"nodeType":"ImportDirective","scope":6898,"sourceUnit":8008,"src":"73:26:20","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":null,"fullyImplemented":true,"id":6897,"linearizedBaseContracts":[6897],"name":"AstraOracleLibrary","nodeType":"ContractDefinition","nodes":[{"id":6796,"libraryName":{"contractScope":null,"id":6795,"name":"FixedPoint","nodeType":"UserDefinedTypeName","referencedDeclaration":8007,"src":"232:10:20","typeDescriptions":{"typeIdentifier":"t_contract$_FixedPoint_$8007","typeString":"library FixedPoint"}},"nodeType":"UsingForDirective","src":"226:23:20","typeName":null},{"body":{"id":6811,"nodeType":"Block","src":"431:57:20","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":6803,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"455:5:20","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":6804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"455:15:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":6807,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":6805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"473:1:20","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"argumentTypes":null,"hexValue":"3332","id":6806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"478:2:20","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"473:7:20","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"455:25:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"448:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":6801,"name":"uint32","nodeType":"ElementaryTypeName","src":"448:6:20","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":6809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"448:33:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":6800,"id":6810,"nodeType":"Return","src":"441:40:20"}]},"documentation":null,"id":6812,"implemented":true,"kind":"function","modifiers":[],"name":"currentBlockTimestamp","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6797,"nodeType":"ParameterList","parameters":[],"src":"397:2:20"},"returnParameters":{"id":6800,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6799,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":6812,"src":"423:6:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6798,"name":"uint32","nodeType":"ElementaryTypeName","src":"423:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"src":"422:8:20"},"scope":6897,"src":"367:121:20","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":6895,"nodeType":"Block","src":"744:875:20","statements":[{"expression":{"argumentTypes":null,"id":6826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6823,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"754:14:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"id":6824,"name":"currentBlockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6812,"src":"771:21:20","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint32_$","typeString":"function () view returns (uint32)"}},"id":6825,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"771:23:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"754:40:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"id":6827,"nodeType":"ExpressionStatement","src":"754:40:20"},{"expression":{"argumentTypes":null,"id":6834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6828,"name":"price0Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6817,"src":"804:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6830,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"834:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6829,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"823:10:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":6831,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"823:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":6832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"price0CumulativeLast","nodeType":"MemberAccess","referencedDeclaration":265,"src":"823:37:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":6833,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"823:39:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"804:58:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6835,"nodeType":"ExpressionStatement","src":"804:58:20"},{"expression":{"argumentTypes":null,"id":6842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6836,"name":"price1Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6819,"src":"872:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6838,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"902:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6837,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"891:10:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":6839,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"891:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":6840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"price1CumulativeLast","nodeType":"MemberAccess","referencedDeclaration":270,"src":"891:37:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":6841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"891:39:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"872:58:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6843,"nodeType":"ExpressionStatement","src":"872:58:20"},{"assignments":[6845,6847,6849],"declarations":[{"constant":false,"id":6845,"mutability":"mutable","name":"reserve0","nodeType":"VariableDeclaration","overrides":null,"scope":6895,"src":"1042:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":6844,"name":"uint112","nodeType":"ElementaryTypeName","src":"1042:7:20","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"},{"constant":false,"id":6847,"mutability":"mutable","name":"reserve1","nodeType":"VariableDeclaration","overrides":null,"scope":6895,"src":"1060:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":6846,"name":"uint112","nodeType":"ElementaryTypeName","src":"1060:7:20","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"},{"constant":false,"id":6849,"mutability":"mutable","name":"blockTimestampLast","nodeType":"VariableDeclaration","overrides":null,"scope":6895,"src":"1078:25:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6848,"name":"uint32","nodeType":"ElementaryTypeName","src":"1078:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":6855,"initialValue":{"argumentTypes":null,"arguments":[],"expression":{"argumentTypes":[],"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6851,"name":"pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6814,"src":"1118:4:20","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":6850,"name":"IAstraPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":318,"src":"1107:10:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraPair_$318_$","typeString":"type(contract IAstraPair)"}},"id":6852,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1107:16:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraPair_$318","typeString":"contract IAstraPair"}},"id":6853,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getReserves","nodeType":"MemberAccess","referencedDeclaration":260,"src":"1107:28:20","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"function () view external returns (uint112,uint112,uint32)"}},"id":6854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1107:30:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$","typeString":"tuple(uint112,uint112,uint32)"}},"nodeType":"VariableDeclarationStatement","src":"1041:96:20"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":6858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6856,"name":"blockTimestampLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6849,"src":"1151:18:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"id":6857,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"1173:14:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1151:36:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6894,"nodeType":"IfStatement","src":"1147:466:20","trueBody":{"id":6893,"nodeType":"Block","src":"1189:424:20","statements":[{"assignments":[6860],"declarations":[{"constant":false,"id":6860,"mutability":"mutable","name":"timeElapsed","nodeType":"VariableDeclaration","overrides":null,"scope":6893,"src":"1250:18:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6859,"name":"uint32","nodeType":"ElementaryTypeName","src":"1250:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"id":6864,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint32","typeString":"uint32"},"id":6863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6861,"name":"blockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6821,"src":"1271:14:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":6862,"name":"blockTimestampLast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6849,"src":"1288:18:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1271:35:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"nodeType":"VariableDeclarationStatement","src":"1250:56:20"},{"expression":{"argumentTypes":null,"id":6877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6865,"name":"price0Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6817,"src":"1394:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6870,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6847,"src":"1439:8:20","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},{"argumentTypes":null,"id":6871,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6845,"src":"1449:8:20","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"},{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"argumentTypes":null,"id":6868,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8007,"src":"1419:10:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$8007_$","typeString":"type(library FixedPoint)"}},"id":6869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fraction","nodeType":"MemberAccess","referencedDeclaration":7898,"src":"1419:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_struct$_uq112x112_$7386_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (struct FixedPoint.uq112x112 memory)"}},"id":6872,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1419:39:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":6873,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"1419:42:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":6867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1414:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6866,"name":"uint","nodeType":"ElementaryTypeName","src":"1414:4:20","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":6874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1414:48:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":6875,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6860,"src":"1465:11:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1414:62:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1394:82:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6878,"nodeType":"ExpressionStatement","src":"1394:82:20"},{"expression":{"argumentTypes":null,"id":6891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6879,"name":"price1Cumulative","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6819,"src":"1520:16:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":6884,"name":"reserve0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6845,"src":"1565:8:20","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},{"argumentTypes":null,"id":6885,"name":"reserve1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6847,"src":"1575:8:20","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"},{"typeIdentifier":"t_uint112","typeString":"uint112"}],"expression":{"argumentTypes":null,"id":6882,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8007,"src":"1545:10:20","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$8007_$","typeString":"type(library FixedPoint)"}},"id":6883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"fraction","nodeType":"MemberAccess","referencedDeclaration":7898,"src":"1545:19:20","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_struct$_uq112x112_$7386_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (struct FixedPoint.uq112x112 memory)"}},"id":6886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1545:39:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":6887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"1545:42:20","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":6881,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1540:4:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6880,"name":"uint","nodeType":"ElementaryTypeName","src":"1540:4:20","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":6888,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1540:48:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":6889,"name":"timeElapsed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6860,"src":"1591:11:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1540:62:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1520:82:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6892,"nodeType":"ExpressionStatement","src":"1520:82:20"}]}}]},"documentation":null,"id":6896,"implemented":true,"kind":"function","modifiers":[],"name":"currentCumulativePrices","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6815,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6814,"mutability":"mutable","name":"pair","nodeType":"VariableDeclaration","overrides":null,"scope":6896,"src":"633:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":6813,"name":"address","nodeType":"ElementaryTypeName","src":"633:7:20","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"src":"623:28:20"},"returnParameters":{"id":6822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6817,"mutability":"mutable","name":"price0Cumulative","nodeType":"VariableDeclaration","overrides":null,"scope":6896,"src":"675:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6816,"name":"uint","nodeType":"ElementaryTypeName","src":"675:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6819,"mutability":"mutable","name":"price1Cumulative","nodeType":"VariableDeclaration","overrides":null,"scope":6896,"src":"698:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6818,"name":"uint","nodeType":"ElementaryTypeName","src":"698:4:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":6821,"mutability":"mutable","name":"blockTimestamp","nodeType":"VariableDeclaration","overrides":null,"scope":6896,"src":"721:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":6820,"name":"uint32","nodeType":"ElementaryTypeName","src":"721:6:20","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":null,"visibility":"internal"}],"src":"674:69:20"},"scope":6897,"src":"591:1028:20","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":6898,"src":"193:1428:20"}],"src":"0:1622:20"},"id":20},"contracts/periphery/libraries/Babylonian.sol":{"ast":{"absolutePath":"contracts/periphery/libraries/Babylonian.sol","exportedSymbols":{"Babylonian":[7100]},"id":7101,"nodeType":"SourceUnit","nodes":[{"id":6899,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"46:24:21"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":null,"fullyImplemented":true,"id":7100,"linearizedBaseContracts":[7100],"name":"Babylonian","nodeType":"ContractDefinition","nodes":[{"body":{"id":7098,"nodeType":"Block","src":"439:1140:21","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6906,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"453:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":6907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"458:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"453:6:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6911,"nodeType":"IfStatement","src":"449:20:21","trueBody":{"expression":{"argumentTypes":null,"hexValue":"30","id":6909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"468:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":6905,"id":6910,"nodeType":"Return","src":"461:8:21"}},{"assignments":[6913],"declarations":[{"constant":false,"id":6913,"mutability":"mutable","name":"xx","nodeType":"VariableDeclaration","overrides":null,"scope":7098,"src":"631:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6912,"name":"uint256","nodeType":"ElementaryTypeName","src":"631:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6915,"initialValue":{"argumentTypes":null,"id":6914,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"644:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"631:14:21"},{"assignments":[6917],"declarations":[{"constant":false,"id":6917,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":7098,"src":"655:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6916,"name":"uint256","nodeType":"ElementaryTypeName","src":"655:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":6919,"initialValue":{"argumentTypes":null,"hexValue":"31","id":6918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"667:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"655:13:21"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6920,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"682:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":6921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"688:35:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"src":"682:41:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6932,"nodeType":"IfStatement","src":"678:104:21","trueBody":{"id":6931,"nodeType":"Block","src":"725:57:21","statements":[{"expression":{"argumentTypes":null,"id":6925,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6923,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"739:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"313238","id":6924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"746:3:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"739:10:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6926,"nodeType":"ExpressionStatement","src":"739:10:21"},{"expression":{"argumentTypes":null,"id":6929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6927,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"763:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"argumentTypes":null,"hexValue":"3634","id":6928,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"769:2:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"763:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6930,"nodeType":"ExpressionStatement","src":"763:8:21"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6933,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"795:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"30783130303030303030303030303030303030","id":6934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"801:19:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"value":"0x10000000000000000"},"src":"795:25:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6945,"nodeType":"IfStatement","src":"791:87:21","trueBody":{"id":6944,"nodeType":"Block","src":"822:56:21","statements":[{"expression":{"argumentTypes":null,"id":6938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6936,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"836:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"3634","id":6937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"843:2:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"836:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6939,"nodeType":"ExpressionStatement","src":"836:9:21"},{"expression":{"argumentTypes":null,"id":6942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6940,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"859:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"argumentTypes":null,"hexValue":"3332","id":6941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"865:2:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"859:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6943,"nodeType":"ExpressionStatement","src":"859:8:21"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6946,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"891:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"3078313030303030303030","id":6947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"897:11:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"value":"0x100000000"},"src":"891:17:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6958,"nodeType":"IfStatement","src":"887:79:21","trueBody":{"id":6957,"nodeType":"Block","src":"910:56:21","statements":[{"expression":{"argumentTypes":null,"id":6951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6949,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"924:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"3332","id":6950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"931:2:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"924:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6952,"nodeType":"ExpressionStatement","src":"924:9:21"},{"expression":{"argumentTypes":null,"id":6955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6953,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"947:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"argumentTypes":null,"hexValue":"3136","id":6954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"953:2:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"947:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6956,"nodeType":"ExpressionStatement","src":"947:8:21"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6961,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6959,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"979:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"30783130303030","id":6960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"985:7:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"value":"0x10000"},"src":"979:13:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6971,"nodeType":"IfStatement","src":"975:74:21","trueBody":{"id":6970,"nodeType":"Block","src":"994:55:21","statements":[{"expression":{"argumentTypes":null,"id":6964,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6962,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"1008:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"3136","id":6963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1015:2:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"1008:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6965,"nodeType":"ExpressionStatement","src":"1008:9:21"},{"expression":{"argumentTypes":null,"id":6968,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6966,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1031:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"argumentTypes":null,"hexValue":"38","id":6967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1037:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1031:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6969,"nodeType":"ExpressionStatement","src":"1031:7:21"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6972,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"1062:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"3078313030","id":6973,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1068:5:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"src":"1062:11:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6984,"nodeType":"IfStatement","src":"1058:71:21","trueBody":{"id":6983,"nodeType":"Block","src":"1075:54:21","statements":[{"expression":{"argumentTypes":null,"id":6977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6975,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"1089:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"38","id":6976,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1096:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1089:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6978,"nodeType":"ExpressionStatement","src":"1089:8:21"},{"expression":{"argumentTypes":null,"id":6981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6979,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1111:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"argumentTypes":null,"hexValue":"34","id":6980,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1117:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1111:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6982,"nodeType":"ExpressionStatement","src":"1111:7:21"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6987,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6985,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"1142:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"30783130","id":6986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1148:4:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"1142:10:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":6997,"nodeType":"IfStatement","src":"1138:70:21","trueBody":{"id":6996,"nodeType":"Block","src":"1154:54:21","statements":[{"expression":{"argumentTypes":null,"id":6990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6988,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"1168:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"34","id":6989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1175:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1168:8:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6991,"nodeType":"ExpressionStatement","src":"1168:8:21"},{"expression":{"argumentTypes":null,"id":6994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":6992,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1190:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"argumentTypes":null,"hexValue":"32","id":6993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1196:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1190:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":6995,"nodeType":"ExpressionStatement","src":"1190:7:21"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":6998,"name":"xx","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6913,"src":"1221:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"307838","id":6999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1227:3:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x8"},"src":"1221:9:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7006,"nodeType":"IfStatement","src":"1217:47:21","trueBody":{"id":7005,"nodeType":"Block","src":"1232:32:21","statements":[{"expression":{"argumentTypes":null,"id":7003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7001,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1246:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"argumentTypes":null,"hexValue":"31","id":7002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1252:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1246:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7004,"nodeType":"ExpressionStatement","src":"1246:7:21"}]}},{"expression":{"argumentTypes":null,"id":7016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7007,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1273:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7012,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7008,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1278:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7009,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"1282:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":7010,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1286:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1282:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1278:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7013,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1277:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"argumentTypes":null,"hexValue":"31","id":7014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1292:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1277:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1273:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7017,"nodeType":"ExpressionStatement","src":"1273:20:21"},{"expression":{"argumentTypes":null,"id":7027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7018,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1303:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7019,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1308:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7020,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"1312:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":7021,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1316:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1312:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1308:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7024,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1307:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"argumentTypes":null,"hexValue":"31","id":7025,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1322:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1307:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1303:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7028,"nodeType":"ExpressionStatement","src":"1303:20:21"},{"expression":{"argumentTypes":null,"id":7038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7029,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1333:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7034,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7030,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1338:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7033,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7031,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"1342:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":7032,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1346:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1342:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1338:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7035,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1337:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"argumentTypes":null,"hexValue":"31","id":7036,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1352:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1337:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1333:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7039,"nodeType":"ExpressionStatement","src":"1333:20:21"},{"expression":{"argumentTypes":null,"id":7049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7040,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1363:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7041,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1368:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7042,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"1372:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":7043,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1376:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1372:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1368:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7046,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1367:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"argumentTypes":null,"hexValue":"31","id":7047,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1382:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1367:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1363:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7050,"nodeType":"ExpressionStatement","src":"1363:20:21"},{"expression":{"argumentTypes":null,"id":7060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7051,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1393:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7052,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1398:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7053,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"1402:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":7054,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1406:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1402:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1398:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7057,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1397:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"argumentTypes":null,"hexValue":"31","id":7058,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1412:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1397:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1393:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7061,"nodeType":"ExpressionStatement","src":"1393:20:21"},{"expression":{"argumentTypes":null,"id":7071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7062,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1423:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7063,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1428:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7064,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"1432:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":7065,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1436:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1432:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1428:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7068,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1427:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"argumentTypes":null,"hexValue":"31","id":7069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1442:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1427:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1423:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7072,"nodeType":"ExpressionStatement","src":"1423:20:21"},{"expression":{"argumentTypes":null,"id":7082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7073,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1453:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7074,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1458:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7075,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"1462:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":7076,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1466:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1462:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1458:9:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7079,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1457:11:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"argumentTypes":null,"hexValue":"31","id":7080,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1472:1:21","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1457:16:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1453:20:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7083,"nodeType":"ExpressionStatement","src":"1453:20:21"},{"assignments":[7085],"declarations":[{"constant":false,"id":7085,"mutability":"mutable","name":"r1","nodeType":"VariableDeclaration","overrides":null,"scope":7098,"src":"1520:10:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7084,"name":"uint256","nodeType":"ElementaryTypeName","src":"1520:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7089,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7086,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6901,"src":"1533:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":7087,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1537:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1533:5:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1520:18:21"},{"expression":{"argumentTypes":null,"components":[{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7090,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1556:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":7091,"name":"r1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"1560:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1556:6:21","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":7094,"name":"r1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7085,"src":"1569:2:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7095,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1556:15:21","trueExpression":{"argumentTypes":null,"id":7093,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6917,"src":"1565:1:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7096,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1555:17:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6905,"id":7097,"nodeType":"Return","src":"1548:24:21"}]},"documentation":null,"id":7099,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":6902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6901,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","overrides":null,"scope":7099,"src":"396:9:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6900,"name":"uint256","nodeType":"ElementaryTypeName","src":"396:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"395:11:21"},"returnParameters":{"id":6905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6904,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":7099,"src":"430:7:21","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6903,"name":"uint256","nodeType":"ElementaryTypeName","src":"430:7:21","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"429:9:21"},"scope":7100,"src":"382:1197:21","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7101,"src":"210:1371:21"}],"src":"46:1536:21"},"id":21},"contracts/periphery/libraries/BitMath.sol":{"ast":{"absolutePath":"contracts/periphery/libraries/BitMath.sol","exportedSymbols":{"BitMath":[7378]},"id":7379,"nodeType":"SourceUnit","nodes":[{"id":7102,"literals":["solidity",">=","0.5",".0"],"nodeType":"PragmaDirective","src":"45:24:22"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":null,"fullyImplemented":true,"id":7378,"linearizedBaseContracts":[7378],"name":"BitMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":7215,"nodeType":"Block","src":"288:697:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7110,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"306:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"310:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"306:5:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f","id":7113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"313:35:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_03c73b0187854c5090030bbfe0f7d97709bd7eabff8b89faf5be84b9d8c785d2","typeString":"literal_string \"BitMath::mostSignificantBit: zero\""},"value":"BitMath::mostSignificantBit: zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_03c73b0187854c5090030bbfe0f7d97709bd7eabff8b89faf5be84b9d8c785d2","typeString":"literal_string \"BitMath::mostSignificantBit: zero\""}],"id":7109,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"298:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"298:51:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7115,"nodeType":"ExpressionStatement","src":"298:51:22"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7116,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"364:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030","id":7117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"369:35:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"value":"0x100000000000000000000000000000000"},"src":"364:40:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7128,"nodeType":"IfStatement","src":"360:102:22","trueBody":{"id":7127,"nodeType":"Block","src":"406:56:22","statements":[{"expression":{"argumentTypes":null,"id":7121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7119,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"420:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"313238","id":7120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"426:3:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"420:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7122,"nodeType":"ExpressionStatement","src":"420:9:22"},{"expression":{"argumentTypes":null,"id":7125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7123,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"443:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"hexValue":"313238","id":7124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"448:3:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"443:8:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7126,"nodeType":"ExpressionStatement","src":"443:8:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7129,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"475:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"30783130303030303030303030303030303030","id":7130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"480:19:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"value":"0x10000000000000000"},"src":"475:24:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7141,"nodeType":"IfStatement","src":"471:84:22","trueBody":{"id":7140,"nodeType":"Block","src":"501:54:22","statements":[{"expression":{"argumentTypes":null,"id":7134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7132,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"515:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"3634","id":7133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"521:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"515:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7135,"nodeType":"ExpressionStatement","src":"515:8:22"},{"expression":{"argumentTypes":null,"id":7138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7136,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"537:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"hexValue":"3634","id":7137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"542:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"537:7:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7139,"nodeType":"ExpressionStatement","src":"537:7:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7142,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"568:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"3078313030303030303030","id":7143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"573:11:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"value":"0x100000000"},"src":"568:16:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7154,"nodeType":"IfStatement","src":"564:76:22","trueBody":{"id":7153,"nodeType":"Block","src":"586:54:22","statements":[{"expression":{"argumentTypes":null,"id":7147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7145,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"600:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"3332","id":7146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"606:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"600:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7148,"nodeType":"ExpressionStatement","src":"600:8:22"},{"expression":{"argumentTypes":null,"id":7151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7149,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"622:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"hexValue":"3332","id":7150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"627:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"622:7:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7152,"nodeType":"ExpressionStatement","src":"622:7:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7155,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"653:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"30783130303030","id":7156,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"658:7:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"value":"0x10000"},"src":"653:12:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7167,"nodeType":"IfStatement","src":"649:72:22","trueBody":{"id":7166,"nodeType":"Block","src":"667:54:22","statements":[{"expression":{"argumentTypes":null,"id":7160,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7158,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"681:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"3136","id":7159,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"687:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"681:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7161,"nodeType":"ExpressionStatement","src":"681:8:22"},{"expression":{"argumentTypes":null,"id":7164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7162,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"703:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"hexValue":"3136","id":7163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"708:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"703:7:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7165,"nodeType":"ExpressionStatement","src":"703:7:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7168,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"734:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"3078313030","id":7169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"739:5:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"0x100"},"src":"734:10:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7180,"nodeType":"IfStatement","src":"730:68:22","trueBody":{"id":7179,"nodeType":"Block","src":"746:52:22","statements":[{"expression":{"argumentTypes":null,"id":7173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7171,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"760:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"38","id":7172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"766:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"760:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7174,"nodeType":"ExpressionStatement","src":"760:7:22"},{"expression":{"argumentTypes":null,"id":7177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7175,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"781:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"hexValue":"38","id":7176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"786:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"781:6:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7178,"nodeType":"ExpressionStatement","src":"781:6:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7181,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"811:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"30783130","id":7182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"816:4:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"0x10"},"src":"811:9:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7193,"nodeType":"IfStatement","src":"807:67:22","trueBody":{"id":7192,"nodeType":"Block","src":"822:52:22","statements":[{"expression":{"argumentTypes":null,"id":7186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7184,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"836:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"34","id":7185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"842:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"836:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7187,"nodeType":"ExpressionStatement","src":"836:7:22"},{"expression":{"argumentTypes":null,"id":7190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7188,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"857:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"hexValue":"34","id":7189,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"862:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"857:6:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7191,"nodeType":"ExpressionStatement","src":"857:6:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7194,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"887:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"307834","id":7195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"892:3:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"0x4"},"src":"887:8:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7206,"nodeType":"IfStatement","src":"883:66:22","trueBody":{"id":7205,"nodeType":"Block","src":"897:52:22","statements":[{"expression":{"argumentTypes":null,"id":7199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7197,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"911:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"32","id":7198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"917:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"911:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7200,"nodeType":"ExpressionStatement","src":"911:7:22"},{"expression":{"argumentTypes":null,"id":7203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7201,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"932:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"hexValue":"32","id":7202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"937:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"932:6:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7204,"nodeType":"ExpressionStatement","src":"932:6:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7207,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7104,"src":"962:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"hexValue":"307832","id":7208,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"967:3:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"0x2"},"src":"962:8:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7214,"nodeType":"IfStatement","src":"958:20:22","trueBody":{"expression":{"argumentTypes":null,"id":7212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7210,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7107,"src":"972:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"hexValue":"31","id":7211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"977:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"972:6:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7213,"nodeType":"ExpressionStatement","src":"972:6:22"}}]},"documentation":null,"id":7216,"implemented":true,"kind":"function","modifiers":[],"name":"mostSignificantBit","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7104,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","overrides":null,"scope":7216,"src":"245:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7103,"name":"uint256","nodeType":"ElementaryTypeName","src":"245:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"244:11:22"},"returnParameters":{"id":7108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7107,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":7216,"src":"279:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7106,"name":"uint8","nodeType":"ElementaryTypeName","src":"279:5:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"src":"278:9:22"},"scope":7378,"src":"217:768:22","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7376,"nodeType":"Block","src":"1282:830:22","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7226,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7224,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1300:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1304:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1300:5:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726f","id":7227,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1307:36:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_cedc9c6217b2cedc06d11ed96db2989630b9045493eb849d6df363a9a5eb1c43","typeString":"literal_string \"BitMath::leastSignificantBit: zero\""},"value":"BitMath::leastSignificantBit: zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cedc9c6217b2cedc06d11ed96db2989630b9045493eb849d6df363a9a5eb1c43","typeString":"literal_string \"BitMath::leastSignificantBit: zero\""}],"id":7223,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1292:7:22","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1292:52:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7229,"nodeType":"ExpressionStatement","src":"1292:52:22"},{"expression":{"argumentTypes":null,"id":7232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7230,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7221,"src":"1355:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"hexValue":"323535","id":7231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1359:3:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1355:7:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7233,"nodeType":"ExpressionStatement","src":"1355:7:22"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7234,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1376:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7238,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1388:2:22","subExpression":{"argumentTypes":null,"hexValue":"31","id":7237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1389:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7236,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1380:7:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":7235,"name":"uint128","nodeType":"ElementaryTypeName","src":"1380:7:22","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1380:11:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"1376:15:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1394:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1376:19:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7252,"nodeType":"Block","src":"1436:34:22","statements":[{"expression":{"argumentTypes":null,"id":7250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7248,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1450:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"313238","id":7249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1456:3:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1450:9:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7251,"nodeType":"ExpressionStatement","src":"1450:9:22"}]},"id":7253,"nodeType":"IfStatement","src":"1372:98:22","trueBody":{"id":7247,"nodeType":"Block","src":"1397:33:22","statements":[{"expression":{"argumentTypes":null,"id":7245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7243,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7221,"src":"1411:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"hexValue":"313238","id":7244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1416:3:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"1411:8:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7246,"nodeType":"ExpressionStatement","src":"1411:8:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7254,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1483:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7258,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1494:2:22","subExpression":{"argumentTypes":null,"hexValue":"31","id":7257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1495:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1487:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":7255,"name":"uint64","nodeType":"ElementaryTypeName","src":"1487:6:22","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7259,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1487:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"1483:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7261,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1500:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1483:18:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7272,"nodeType":"Block","src":"1541:33:22","statements":[{"expression":{"argumentTypes":null,"id":7270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7268,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1555:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"3634","id":7269,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1561:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"1555:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7271,"nodeType":"ExpressionStatement","src":"1555:8:22"}]},"id":7273,"nodeType":"IfStatement","src":"1479:95:22","trueBody":{"id":7267,"nodeType":"Block","src":"1503:32:22","statements":[{"expression":{"argumentTypes":null,"id":7265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7263,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7221,"src":"1517:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"hexValue":"3634","id":7264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1522:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"1517:7:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7266,"nodeType":"ExpressionStatement","src":"1517:7:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7274,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1587:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7278,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1598:2:22","subExpression":{"argumentTypes":null,"hexValue":"31","id":7277,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1599:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7276,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1591:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":7275,"name":"uint32","nodeType":"ElementaryTypeName","src":"1591:6:22","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7279,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1591:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"1587:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7281,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1604:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1587:18:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7292,"nodeType":"Block","src":"1645:33:22","statements":[{"expression":{"argumentTypes":null,"id":7290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7288,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1659:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"3332","id":7289,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1665:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1659:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7291,"nodeType":"ExpressionStatement","src":"1659:8:22"}]},"id":7293,"nodeType":"IfStatement","src":"1583:95:22","trueBody":{"id":7287,"nodeType":"Block","src":"1607:32:22","statements":[{"expression":{"argumentTypes":null,"id":7285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7283,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7221,"src":"1621:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"hexValue":"3332","id":7284,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1626:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"1621:7:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7286,"nodeType":"ExpressionStatement","src":"1621:7:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7294,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1691:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7298,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1702:2:22","subExpression":{"argumentTypes":null,"hexValue":"31","id":7297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1703:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7296,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1695:6:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":7295,"name":"uint16","nodeType":"ElementaryTypeName","src":"1695:6:22","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7299,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1695:10:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"1691:14:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1708:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1691:18:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7312,"nodeType":"Block","src":"1749:33:22","statements":[{"expression":{"argumentTypes":null,"id":7310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7308,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1763:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"3136","id":7309,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1769:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"1763:8:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7311,"nodeType":"ExpressionStatement","src":"1763:8:22"}]},"id":7313,"nodeType":"IfStatement","src":"1687:95:22","trueBody":{"id":7307,"nodeType":"Block","src":"1711:32:22","statements":[{"expression":{"argumentTypes":null,"id":7305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7303,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7221,"src":"1725:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"hexValue":"3136","id":7304,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1730:2:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"1725:7:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7306,"nodeType":"ExpressionStatement","src":"1725:7:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7314,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1795:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7318,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"1805:2:22","subExpression":{"argumentTypes":null,"hexValue":"31","id":7317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1806:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7316,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1799:5:22","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":7315,"name":"uint8","nodeType":"ElementaryTypeName","src":"1799:5:22","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1799:9:22","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1795:13:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1811:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1795:17:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7332,"nodeType":"Block","src":"1851:32:22","statements":[{"expression":{"argumentTypes":null,"id":7330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7328,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1865:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"38","id":7329,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1871:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1865:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7331,"nodeType":"ExpressionStatement","src":"1865:7:22"}]},"id":7333,"nodeType":"IfStatement","src":"1791:92:22","trueBody":{"id":7327,"nodeType":"Block","src":"1814:31:22","statements":[{"expression":{"argumentTypes":null,"id":7325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7323,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7221,"src":"1828:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"hexValue":"38","id":7324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1833:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"1828:6:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7326,"nodeType":"ExpressionStatement","src":"1828:6:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7334,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1896:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"argumentTypes":null,"hexValue":"307866","id":7335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1900:3:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"1896:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7337,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1906:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1896:11:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7348,"nodeType":"Block","src":"1946:32:22","statements":[{"expression":{"argumentTypes":null,"id":7346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7344,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1960:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"34","id":7345,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1966:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1960:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7347,"nodeType":"ExpressionStatement","src":"1960:7:22"}]},"id":7349,"nodeType":"IfStatement","src":"1892:86:22","trueBody":{"id":7343,"nodeType":"Block","src":"1909:31:22","statements":[{"expression":{"argumentTypes":null,"id":7341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7339,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7221,"src":"1923:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"hexValue":"34","id":7340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1928:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1923:6:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7342,"nodeType":"ExpressionStatement","src":"1923:6:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7350,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"1991:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"argumentTypes":null,"hexValue":"307833","id":7351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1995:3:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"0x3"},"src":"1991:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7353,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2001:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1991:11:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7364,"nodeType":"Block","src":"2041:32:22","statements":[{"expression":{"argumentTypes":null,"id":7362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7360,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"2055:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"argumentTypes":null,"hexValue":"32","id":7361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2061:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2055:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":7363,"nodeType":"ExpressionStatement","src":"2055:7:22"}]},"id":7365,"nodeType":"IfStatement","src":"1987:86:22","trueBody":{"id":7359,"nodeType":"Block","src":"2004:31:22","statements":[{"expression":{"argumentTypes":null,"id":7357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7355,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7221,"src":"2018:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"hexValue":"32","id":7356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2023:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2018:6:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7358,"nodeType":"ExpressionStatement","src":"2018:6:22"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7366,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7218,"src":"2086:1:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"argumentTypes":null,"hexValue":"307831","id":7367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2090:3:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x1"},"src":"2086:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2096:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2086:11:22","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7375,"nodeType":"IfStatement","src":"2082:23:22","trueBody":{"expression":{"argumentTypes":null,"id":7373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7371,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7221,"src":"2099:1:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"hexValue":"31","id":7372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2104:1:22","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2099:6:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7374,"nodeType":"ExpressionStatement","src":"2099:6:22"}}]},"documentation":null,"id":7377,"implemented":true,"kind":"function","modifiers":[],"name":"leastSignificantBit","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7218,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","overrides":null,"scope":7377,"src":"1239:9:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7217,"name":"uint256","nodeType":"ElementaryTypeName","src":"1239:7:22","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1238:11:22"},"returnParameters":{"id":7222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7221,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":7377,"src":"1273:7:22","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7220,"name":"uint8","nodeType":"ElementaryTypeName","src":"1273:5:22","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"src":"1272:9:22"},"scope":7378,"src":"1210:902:22","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7379,"src":"71:2043:22"}],"src":"45:2070:22"},"id":22},"contracts/periphery/libraries/FixedPoint.sol":{"ast":{"absolutePath":"contracts/periphery/libraries/FixedPoint.sol","exportedSymbols":{"FixedPoint":[8007]},"id":8008,"nodeType":"SourceUnit","nodes":[{"id":7380,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"45:24:23"},{"absolutePath":"contracts/periphery/libraries/FullMath.sol","file":"./FullMath.sol","id":7381,"nodeType":"ImportDirective","scope":8008,"sourceUnit":8229,"src":"71:24:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/Babylonian.sol","file":"../../periphery/libraries/Babylonian.sol","id":7382,"nodeType":"ImportDirective","scope":8008,"sourceUnit":7101,"src":"96:50:23","symbolAliases":[],"unitAlias":""},{"absolutePath":"contracts/periphery/libraries/BitMath.sol","file":"./BitMath.sol","id":7383,"nodeType":"ImportDirective","scope":8008,"sourceUnit":7379,"src":"147:23:23","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":null,"fullyImplemented":true,"id":8007,"linearizedBaseContracts":[8007],"name":"FixedPoint","nodeType":"ContractDefinition","nodes":[{"canonicalName":"FixedPoint.uq112x112","id":7386,"members":[{"constant":false,"id":7385,"mutability":"mutable","name":"_x","nodeType":"VariableDeclaration","overrides":null,"scope":7386,"src":"387:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":7384,"name":"uint224","nodeType":"ElementaryTypeName","src":"387:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"value":null,"visibility":"internal"}],"name":"uq112x112","nodeType":"StructDefinition","scope":8007,"src":"360:44:23","visibility":"public"},{"canonicalName":"FixedPoint.uq144x112","id":7389,"members":[{"constant":false,"id":7388,"mutability":"mutable","name":"_x","nodeType":"VariableDeclaration","overrides":null,"scope":7389,"src":"497:10:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7387,"name":"uint256","nodeType":"ElementaryTypeName","src":"497:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"name":"uq144x112","nodeType":"StructDefinition","scope":8007,"src":"470:44:23","visibility":"public"},{"constant":true,"functionSelector":"552f888a","id":7392,"mutability":"constant","name":"RESOLUTION","nodeType":"VariableDeclaration","overrides":null,"scope":8007,"src":"520:38:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7390,"name":"uint8","nodeType":"ElementaryTypeName","src":"520:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"argumentTypes":null,"hexValue":"313132","id":7391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"555:3:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},"visibility":"public"},{"constant":true,"functionSelector":"3bf7a83e","id":7395,"mutability":"constant","name":"Q112","nodeType":"VariableDeclaration","overrides":null,"scope":8007,"src":"564:62:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7393,"name":"uint256","nodeType":"ElementaryTypeName","src":"564:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"30783130303030303030303030303030303030303030303030303030303030","id":7394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"595:31:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_5192296858534827628530496329220096_by_1","typeString":"int_const 5192...(26 digits omitted)...0096"},"value":"0x10000000000000000000000000000"},"visibility":"public"},{"constant":true,"id":7398,"mutability":"constant","name":"Q224","nodeType":"VariableDeclaration","overrides":null,"scope":8007,"src":"642:91:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7396,"name":"uint256","nodeType":"ElementaryTypeName","src":"642:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"3078313030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030","id":7397,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"674:59:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_26959946667150639794667015087019630673637144422540572481103610249216_by_1","typeString":"int_const 2695...(60 digits omitted)...9216"},"value":"0x100000000000000000000000000000000000000000000000000000000"},"visibility":"private"},{"constant":true,"id":7401,"mutability":"constant","name":"LOWER_MASK","nodeType":"VariableDeclaration","overrides":null,"scope":8007,"src":"749:68:23","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7399,"name":"uint256","nodeType":"ElementaryTypeName","src":"749:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"argumentTypes":null,"hexValue":"307866666666666666666666666666666666666666666666666666666666","id":7400,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"787:30:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_5192296858534827628530496329220095_by_1","typeString":"int_const 5192...(26 digits omitted)...0095"},"value":"0xffffffffffffffffffffffffffff"},"visibility":"private"},{"body":{"id":7417,"nodeType":"Block","src":"970:59:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7411,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7403,"src":"1005:1:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":7410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"997:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7409,"name":"uint224","nodeType":"ElementaryTypeName","src":"997:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"997:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"argumentTypes":null,"id":7413,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"1011:10:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"997:24:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7408,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7386,"src":"987:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":7415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"987:35:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":7407,"id":7416,"nodeType":"Return","src":"980:42:23"}]},"documentation":null,"id":7418,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7403,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","overrides":null,"scope":7418,"src":"918:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":7402,"name":"uint112","nodeType":"ElementaryTypeName","src":"918:7:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"}],"src":"917:11:23"},"returnParameters":{"id":7407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7406,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":7418,"src":"952:16:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7405,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"952:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"}],"src":"951:18:23"},"scope":8007,"src":"902:127:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7434,"nodeType":"Block","src":"1146:59:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7428,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7420,"src":"1181:1:23","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint144","typeString":"uint144"}],"id":7427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1173:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7426,"name":"uint256","nodeType":"ElementaryTypeName","src":"1173:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1173:10:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"argumentTypes":null,"id":7430,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"1187:10:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1173:24:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7425,"name":"uq144x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7389,"src":"1163:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq144x112_$7389_storage_ptr_$","typeString":"type(struct FixedPoint.uq144x112 storage pointer)"}},"id":7432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1163:35:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$7389_memory_ptr","typeString":"struct FixedPoint.uq144x112 memory"}},"functionReturnParameters":7424,"id":7433,"nodeType":"Return","src":"1156:42:23"}]},"documentation":null,"id":7435,"implemented":true,"kind":"function","modifiers":[],"name":"encode144","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7420,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","overrides":null,"scope":7435,"src":"1094:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":7419,"name":"uint144","nodeType":"ElementaryTypeName","src":"1094:7:23","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"value":null,"visibility":"internal"}],"src":"1093:11:23"},"returnParameters":{"id":7424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7423,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":7435,"src":"1128:16:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$7389_memory_ptr","typeString":"struct FixedPoint.uq144x112"},"typeName":{"contractScope":null,"id":7422,"name":"uq144x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7389,"src":"1128:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$7389_storage_ptr","typeString":"struct FixedPoint.uq144x112"}},"value":null,"visibility":"internal"}],"src":"1127:18:23"},"scope":8007,"src":"1075:130:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7450,"nodeType":"Block","src":"1359:54:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7444,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7437,"src":"1384:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7445,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"1384:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"argumentTypes":null,"id":7446,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"1395:10:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1384:21:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7443,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1376:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":7442,"name":"uint112","nodeType":"ElementaryTypeName","src":"1376:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1376:30:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":7441,"id":7449,"nodeType":"Return","src":"1369:37:23"}]},"documentation":null,"id":7451,"implemented":true,"kind":"function","modifiers":[],"name":"decode","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7437,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","overrides":null,"scope":7451,"src":"1304:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7436,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"1304:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"}],"src":"1303:23:23"},"returnParameters":{"id":7441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7440,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":7451,"src":"1350:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":7439,"name":"uint112","nodeType":"ElementaryTypeName","src":"1350:7:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"}],"src":"1349:9:23"},"scope":8007,"src":"1288:125:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7466,"nodeType":"Block","src":"1570:54:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7460,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7453,"src":"1595:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$7389_memory_ptr","typeString":"struct FixedPoint.uq144x112 memory"}},"id":7461,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7388,"src":"1595:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"argumentTypes":null,"id":7462,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"1606:10:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1595:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7459,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1587:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":7458,"name":"uint144","nodeType":"ElementaryTypeName","src":"1587:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1587:30:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":7457,"id":7465,"nodeType":"Return","src":"1580:37:23"}]},"documentation":null,"id":7467,"implemented":true,"kind":"function","modifiers":[],"name":"decode144","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7453,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","overrides":null,"scope":7467,"src":"1515:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$7389_memory_ptr","typeString":"struct FixedPoint.uq144x112"},"typeName":{"contractScope":null,"id":7452,"name":"uq144x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7389,"src":"1515:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$7389_storage_ptr","typeString":"struct FixedPoint.uq144x112"}},"value":null,"visibility":"internal"}],"src":"1514:23:23"},"returnParameters":{"id":7457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7456,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":7467,"src":"1561:7:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":7455,"name":"uint144","nodeType":"ElementaryTypeName","src":"1561:7:23","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"value":null,"visibility":"internal"}],"src":"1560:9:23"},"scope":8007,"src":"1496:128:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7504,"nodeType":"Block","src":"1806:149:23","statements":[{"assignments":[7477],"declarations":[{"constant":false,"id":7477,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","overrides":null,"scope":7504,"src":"1816:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7476,"name":"uint256","nodeType":"ElementaryTypeName","src":"1816:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7479,"initialValue":{"argumentTypes":null,"hexValue":"30","id":7478,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1828:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1816:13:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7483,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7481,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7471,"src":"1847:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7482,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1852:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1847:6:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":7489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7484,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7477,"src":"1858:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7488,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7485,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7469,"src":"1862:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7486,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"1862:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":7487,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7471,"src":"1872:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1862:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1858:15:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7490,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1857:17:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":7491,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7471,"src":"1877:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1857:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7493,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7469,"src":"1882:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7494,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"1882:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"1857:32:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1847:42:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4669786564506f696e743a3a6d756c3a206f766572666c6f77","id":7497,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1891:27:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_4948de739aba85946a14984f472451f25a4920e9fae93fb8ed011d3024f8abcf","typeString":"literal_string \"FixedPoint::mul: overflow\""},"value":"FixedPoint::mul: overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4948de739aba85946a14984f472451f25a4920e9fae93fb8ed011d3024f8abcf","typeString":"literal_string \"FixedPoint::mul: overflow\""}],"id":7480,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1839:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1839:80:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7499,"nodeType":"ExpressionStatement","src":"1839:80:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7501,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7477,"src":"1946:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7500,"name":"uq144x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7389,"src":"1936:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq144x112_$7389_storage_ptr_$","typeString":"type(struct FixedPoint.uq144x112 storage pointer)"}},"id":7502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1936:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$7389_memory_ptr","typeString":"struct FixedPoint.uq144x112 memory"}},"functionReturnParameters":7475,"id":7503,"nodeType":"Return","src":"1929:19:23"}]},"documentation":null,"id":7505,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7472,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7469,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","overrides":null,"scope":7505,"src":"1731:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7468,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"1731:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"},{"constant":false,"id":7471,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","overrides":null,"scope":7505,"src":"1754:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7470,"name":"uint256","nodeType":"ElementaryTypeName","src":"1754:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1730:34:23"},"returnParameters":{"id":7475,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7474,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":7505,"src":"1788:16:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$7389_memory_ptr","typeString":"struct FixedPoint.uq144x112"},"typeName":{"contractScope":null,"id":7473,"name":"uq144x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7389,"src":"1788:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq144x112_$7389_storage_ptr","typeString":"struct FixedPoint.uq144x112"}},"value":null,"visibility":"internal"}],"src":"1787:18:23"},"scope":8007,"src":"1718:237:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7556,"nodeType":"Block","src":"2133:190:23","statements":[{"assignments":[7515],"declarations":[{"constant":false,"id":7515,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","overrides":null,"scope":7556,"src":"2143:9:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7514,"name":"uint256","nodeType":"ElementaryTypeName","src":"2143:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7532,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7518,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7507,"src":"2171:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7519,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"2171:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7522,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7509,"src":"2188:1:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7523,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2192:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2188:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"id":7527,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7509,"src":"2201:1:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2188:14:23","trueExpression":{"argumentTypes":null,"id":7526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2196:2:23","subExpression":{"argumentTypes":null,"id":7525,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7509,"src":"2197:1:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2180:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7520,"name":"uint256","nodeType":"ElementaryTypeName","src":"2180:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7529,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2180:23:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":7530,"name":"Q112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"2205:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":7516,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8228,"src":"2155:8:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8228_$","typeString":"type(library FullMath)"}},"id":7517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":8227,"src":"2155:15:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2155:55:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2143:67:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7534,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7515,"src":"2228:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"id":7537,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":7535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2232:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"argumentTypes":null,"hexValue":"323535","id":7536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2235:3:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"2232:6:23","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"src":"2228:10:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4669786564506f696e743a3a6d756c693a206f766572666c6f77","id":7539,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2240:28:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_a352085f3dae8adf2989a66ed19b1d5cfc2957ebdd82dbbc3ae8101610d3fd00","typeString":"literal_string \"FixedPoint::muli: overflow\""},"value":"FixedPoint::muli: overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a352085f3dae8adf2989a66ed19b1d5cfc2957ebdd82dbbc3ae8101610d3fd00","typeString":"literal_string \"FixedPoint::muli: overflow\""}],"id":7533,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2220:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2220:49:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7541,"nodeType":"ExpressionStatement","src":"2220:49:23"},{"expression":{"argumentTypes":null,"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7542,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7509,"src":"2286:1:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2290:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2286:5:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7552,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7515,"src":"2314:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2307:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7550,"name":"int256","nodeType":"ElementaryTypeName","src":"2307:6:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2307:9:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":7554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2286:30:23","trueExpression":{"argumentTypes":null,"id":7549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2294:10:23","subExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7547,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7515,"src":"2302:1:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2295:6:23","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7545,"name":"int256","nodeType":"ElementaryTypeName","src":"2295:6:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2295:9:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":7513,"id":7555,"nodeType":"Return","src":"2279:37:23"}]},"documentation":null,"id":7557,"implemented":true,"kind":"function","modifiers":[],"name":"muli","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7507,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","overrides":null,"scope":7557,"src":"2069:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7506,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"2069:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"},{"constant":false,"id":7509,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","overrides":null,"scope":7557,"src":"2092:8:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7508,"name":"int256","nodeType":"ElementaryTypeName","src":"2092:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":null,"visibility":"internal"}],"src":"2068:33:23"},"returnParameters":{"id":7513,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7512,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":7557,"src":"2125:6:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7511,"name":"int256","nodeType":"ElementaryTypeName","src":"2125:6:23","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"value":null,"visibility":"internal"}],"src":"2124:8:23"},"scope":8007,"src":"2055:268:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7704,"nodeType":"Block","src":"2511:1160:23","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":7574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7566,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7559,"src":"2525:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7567,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"2525:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2536:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2525:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7570,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7561,"src":"2541:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"2541:8:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2553:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2541:13:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2525:29:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7580,"nodeType":"IfStatement","src":"2521:79:23","trueBody":{"id":7579,"nodeType":"Block","src":"2556:44:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":7576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2587:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":7575,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7386,"src":"2577:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":7577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2577:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":7565,"id":7578,"nodeType":"Return","src":"2570:19:23"}]}},{"assignments":[7582],"declarations":[{"constant":false,"id":7582,"mutability":"mutable","name":"upper_self","nodeType":"VariableDeclaration","overrides":null,"scope":7704,"src":"2609:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":7581,"name":"uint112","nodeType":"ElementaryTypeName","src":"2609:7:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"}],"id":7590,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7585,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7559,"src":"2638:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7586,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"2638:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"argumentTypes":null,"id":7587,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"2649:10:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2638:21:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2630:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":7583,"name":"uint112","nodeType":"ElementaryTypeName","src":"2630:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2630:30:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"VariableDeclarationStatement","src":"2609:51:23"},{"assignments":[7592],"declarations":[{"constant":false,"id":7592,"mutability":"mutable","name":"lower_self","nodeType":"VariableDeclaration","overrides":null,"scope":7704,"src":"2679:18:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":7591,"name":"uint112","nodeType":"ElementaryTypeName","src":"2679:7:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"}],"id":7600,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7595,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7559,"src":"2708:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7596,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"2708:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"argumentTypes":null,"id":7597,"name":"LOWER_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7401,"src":"2718:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2708:20:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7594,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2700:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":7593,"name":"uint112","nodeType":"ElementaryTypeName","src":"2700:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7599,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2700:29:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"VariableDeclarationStatement","src":"2679:50:23"},{"assignments":[7602],"declarations":[{"constant":false,"id":7602,"mutability":"mutable","name":"upper_other","nodeType":"VariableDeclaration","overrides":null,"scope":7704,"src":"2751:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":7601,"name":"uint112","nodeType":"ElementaryTypeName","src":"2751:7:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"}],"id":7610,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7605,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7561,"src":"2781:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7606,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"2781:8:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"argumentTypes":null,"id":7607,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"2793:10:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"2781:22:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2773:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":7603,"name":"uint112","nodeType":"ElementaryTypeName","src":"2773:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2773:31:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"VariableDeclarationStatement","src":"2751:53:23"},{"assignments":[7612],"declarations":[{"constant":false,"id":7612,"mutability":"mutable","name":"lower_other","nodeType":"VariableDeclaration","overrides":null,"scope":7704,"src":"2823:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":7611,"name":"uint112","nodeType":"ElementaryTypeName","src":"2823:7:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"value":null,"visibility":"internal"}],"id":7620,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7615,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7561,"src":"2853:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7616,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"2853:8:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"argumentTypes":null,"id":7617,"name":"LOWER_MASK","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7401,"src":"2864:10:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2853:21:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2845:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":7613,"name":"uint112","nodeType":"ElementaryTypeName","src":"2845:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2845:30:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:23"},{"assignments":[7622],"declarations":[{"constant":false,"id":7622,"mutability":"mutable","name":"upper","nodeType":"VariableDeclaration","overrides":null,"scope":7704,"src":"2926:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":7621,"name":"uint224","nodeType":"ElementaryTypeName","src":"2926:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"value":null,"visibility":"internal"}],"id":7629,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7625,"name":"upper_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7582,"src":"2950:10:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":7624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2942:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7623,"name":"uint224","nodeType":"ElementaryTypeName","src":"2942:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2942:19:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":7627,"name":"upper_other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7602,"src":"2964:11:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"2942:33:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"VariableDeclarationStatement","src":"2926:49:23"},{"assignments":[7631],"declarations":[{"constant":false,"id":7631,"mutability":"mutable","name":"lower","nodeType":"VariableDeclaration","overrides":null,"scope":7704,"src":"2994:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":7630,"name":"uint224","nodeType":"ElementaryTypeName","src":"2994:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"value":null,"visibility":"internal"}],"id":7638,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7634,"name":"lower_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7592,"src":"3018:10:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":7633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3010:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7632,"name":"uint224","nodeType":"ElementaryTypeName","src":"3010:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3010:19:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":7636,"name":"lower_other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7612,"src":"3032:11:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"3010:33:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"VariableDeclarationStatement","src":"2994:49:23"},{"assignments":[7640],"declarations":[{"constant":false,"id":7640,"mutability":"mutable","name":"uppers_lowero","nodeType":"VariableDeclaration","overrides":null,"scope":7704,"src":"3065:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":7639,"name":"uint224","nodeType":"ElementaryTypeName","src":"3065:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"value":null,"visibility":"internal"}],"id":7647,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7646,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7643,"name":"upper_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7582,"src":"3097:10:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":7642,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3089:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7641,"name":"uint224","nodeType":"ElementaryTypeName","src":"3089:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3089:19:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":7645,"name":"lower_other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7612,"src":"3111:11:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"3089:33:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"VariableDeclarationStatement","src":"3065:57:23"},{"assignments":[7649],"declarations":[{"constant":false,"id":7649,"mutability":"mutable","name":"uppero_lowers","nodeType":"VariableDeclaration","overrides":null,"scope":7704,"src":"3144:21:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":7648,"name":"uint224","nodeType":"ElementaryTypeName","src":"3144:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"value":null,"visibility":"internal"}],"id":7656,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7652,"name":"upper_other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7602,"src":"3176:11:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint112","typeString":"uint112"}],"id":7651,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3168:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7650,"name":"uint224","nodeType":"ElementaryTypeName","src":"3168:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3168:20:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":7654,"name":"lower_self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7592,"src":"3191:10:23","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"3168:33:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"VariableDeclarationStatement","src":"3144:57:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7658,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7622,"src":"3278:5:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7662,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3295:2:23","subExpression":{"argumentTypes":null,"hexValue":"31","id":7661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3296:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7660,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3287:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":7659,"name":"uint112","nodeType":"ElementaryTypeName","src":"3287:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3287:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"3278:20:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4669786564506f696e743a3a6d756c75713a207570706572206f766572666c6f77","id":7665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3300:35:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b52493e04417af33ef99b1a68ac11af8712869fc1c194d72e6b0646c5968b5de","typeString":"literal_string \"FixedPoint::muluq: upper overflow\""},"value":"FixedPoint::muluq: upper overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b52493e04417af33ef99b1a68ac11af8712869fc1c194d72e6b0646c5968b5de","typeString":"literal_string \"FixedPoint::muluq: upper overflow\""}],"id":7657,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3270:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3270:66:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7667,"nodeType":"ExpressionStatement","src":"3270:66:23"},{"assignments":[7669],"declarations":[{"constant":false,"id":7669,"mutability":"mutable","name":"sum","nodeType":"VariableDeclaration","overrides":null,"scope":7704,"src":"3411:11:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7668,"name":"uint256","nodeType":"ElementaryTypeName","src":"3411:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7685,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7672,"name":"upper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7622,"src":"3433:5:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"argumentTypes":null,"id":7673,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"3442:10:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3433:19:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3425:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7670,"name":"uint256","nodeType":"ElementaryTypeName","src":"3425:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3425:28:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":7676,"name":"uppers_lowero","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7640,"src":"3456:13:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3425:44:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":7678,"name":"uppero_lowers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7649,"src":"3472:13:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3425:60:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7680,"name":"lower","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7631,"src":"3489:5:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"argumentTypes":null,"id":7681,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"3498:10:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"3489:19:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"id":7683,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3488:21:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3425:84:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3411:98:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7687,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7669,"src":"3569:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"3584:2:23","subExpression":{"argumentTypes":null,"hexValue":"31","id":7690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3585:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3576:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7688,"name":"uint224","nodeType":"ElementaryTypeName","src":"3576:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3576:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3569:18:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4669786564506f696e743a3a6d756c75713a2073756d206f766572666c6f77","id":7694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3589:33:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_a26cd9bd987e78cd1c5f6e66afec1e08b996885c9b9c44f1a5fd3a63466b2eff","typeString":"literal_string \"FixedPoint::muluq: sum overflow\""},"value":"FixedPoint::muluq: sum overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a26cd9bd987e78cd1c5f6e66afec1e08b996885c9b9c44f1a5fd3a63466b2eff","typeString":"literal_string \"FixedPoint::muluq: sum overflow\""}],"id":7686,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3561:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3561:62:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7696,"nodeType":"ExpressionStatement","src":"3561:62:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7700,"name":"sum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7669,"src":"3659:3:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3651:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7698,"name":"uint224","nodeType":"ElementaryTypeName","src":"3651:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3651:12:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7697,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7386,"src":"3641:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":7702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3641:23:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":7565,"id":7703,"nodeType":"Return","src":"3634:30:23"}]},"documentation":null,"id":7705,"implemented":true,"kind":"function","modifiers":[],"name":"muluq","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7562,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7559,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","overrides":null,"scope":7705,"src":"2423:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7558,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"2423:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"},{"constant":false,"id":7561,"mutability":"mutable","name":"other","nodeType":"VariableDeclaration","overrides":null,"scope":7705,"src":"2446:22:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7560,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"2446:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"}],"src":"2422:47:23"},"returnParameters":{"id":7565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7564,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":7705,"src":"2493:16:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7563,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"2493:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"}],"src":"2492:18:23"},"scope":8007,"src":"2408:1263:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7807,"nodeType":"Block","src":"3844:590:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7715,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7709,"src":"3862:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7716,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"3862:8:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3873:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3862:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4669786564506f696e743a3a64697675713a206469766973696f6e206279207a65726f","id":7719,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3876:37:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_422bc21f2eb91510a9cc7c0ead94b70d98345c9617c11cff466b9a69e8fa701d","typeString":"literal_string \"FixedPoint::divuq: division by zero\""},"value":"FixedPoint::divuq: division by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_422bc21f2eb91510a9cc7c0ead94b70d98345c9617c11cff466b9a69e8fa701d","typeString":"literal_string \"FixedPoint::divuq: division by zero\""}],"id":7714,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3854:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3854:60:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7721,"nodeType":"ExpressionStatement","src":"3854:60:23"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7722,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7707,"src":"3928:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7723,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"3928:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7724,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7709,"src":"3939:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7725,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"3939:8:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3928:19:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7735,"nodeType":"IfStatement","src":"3924:81:23","trueBody":{"id":7734,"nodeType":"Block","src":"3949:56:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7730,"name":"Q112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"3988:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7729,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3980:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7728,"name":"uint224","nodeType":"ElementaryTypeName","src":"3980:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3980:13:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7727,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7386,"src":"3970:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":7732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3970:24:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":7713,"id":7733,"nodeType":"Return","src":"3963:31:23"}]}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7743,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7736,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7707,"src":"4018:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7737,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"4018:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7741,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4037:2:23","subExpression":{"argumentTypes":null,"hexValue":"31","id":7740,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4038:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7739,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4029:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":7738,"name":"uint144","nodeType":"ElementaryTypeName","src":"4029:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4029:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"4018:22:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7777,"nodeType":"IfStatement","src":"4014:232:23","trueBody":{"id":7776,"nodeType":"Block","src":"4042:204:23","statements":[{"assignments":[7745],"declarations":[{"constant":false,"id":7745,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":7776,"src":"4056:13:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7744,"name":"uint256","nodeType":"ElementaryTypeName","src":"4056:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7757,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7748,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7707,"src":"4081:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"4081:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7747,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4073:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7746,"name":"uint256","nodeType":"ElementaryTypeName","src":"4073:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4073:16:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"argumentTypes":null,"id":7751,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"4093:10:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4073:30:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7753,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4072:32:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7754,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7709,"src":"4107:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7755,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"4107:8:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"4072:43:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4056:59:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7759,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7745,"src":"4137:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7763,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4154:2:23","subExpression":{"argumentTypes":null,"hexValue":"31","id":7762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4155:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4146:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7760,"name":"uint224","nodeType":"ElementaryTypeName","src":"4146:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4146:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"4137:20:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4669786564506f696e743a3a64697675713a206f766572666c6f77","id":7766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4159:29:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_3f2635ef6119740811945e2425893e62b117b25251f7d0aaa9a8ce883079e0ad","typeString":"literal_string \"FixedPoint::divuq: overflow\""},"value":"FixedPoint::divuq: overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3f2635ef6119740811945e2425893e62b117b25251f7d0aaa9a8ce883079e0ad","typeString":"literal_string \"FixedPoint::divuq: overflow\""}],"id":7758,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4129:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4129:60:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7768,"nodeType":"ExpressionStatement","src":"4129:60:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7772,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7745,"src":"4228:5:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4220:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7770,"name":"uint224","nodeType":"ElementaryTypeName","src":"4220:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4220:14:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7769,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7386,"src":"4210:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":7774,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4210:25:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":7713,"id":7775,"nodeType":"Return","src":"4203:32:23"}]}},{"assignments":[7779],"declarations":[{"constant":false,"id":7779,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","overrides":null,"scope":7807,"src":"4256:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7778,"name":"uint256","nodeType":"ElementaryTypeName","src":"4256:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7788,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7782,"name":"Q112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"4289:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7783,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7707,"src":"4295:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7784,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"4295:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7785,"name":"other","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7709,"src":"4304:5:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7786,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"4304:8:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint224","typeString":"uint224"},{"typeIdentifier":"t_uint224","typeString":"uint224"}],"expression":{"argumentTypes":null,"id":7780,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8228,"src":"4273:8:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8228_$","typeString":"type(library FullMath)"}},"id":7781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":8227,"src":"4273:15:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4273:40:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4256:57:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7790,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7779,"src":"4331:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7794,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4349:2:23","subExpression":{"argumentTypes":null,"hexValue":"31","id":7793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4350:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7792,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4341:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7791,"name":"uint224","nodeType":"ElementaryTypeName","src":"4341:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4341:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"4331:21:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4669786564506f696e743a3a64697675713a206f766572666c6f77","id":7797,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4354:29:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_3f2635ef6119740811945e2425893e62b117b25251f7d0aaa9a8ce883079e0ad","typeString":"literal_string \"FixedPoint::divuq: overflow\""},"value":"FixedPoint::divuq: overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3f2635ef6119740811945e2425893e62b117b25251f7d0aaa9a8ce883079e0ad","typeString":"literal_string \"FixedPoint::divuq: overflow\""}],"id":7789,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4323:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4323:61:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7799,"nodeType":"ExpressionStatement","src":"4323:61:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7803,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7779,"src":"4419:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4411:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7801,"name":"uint224","nodeType":"ElementaryTypeName","src":"4411:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7804,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4411:15:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7800,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7386,"src":"4401:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":7805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4401:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":7713,"id":7806,"nodeType":"Return","src":"4394:33:23"}]},"documentation":null,"id":7808,"implemented":true,"kind":"function","modifiers":[],"name":"divuq","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7707,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","overrides":null,"scope":7808,"src":"3756:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7706,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"3756:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"},{"constant":false,"id":7709,"mutability":"mutable","name":"other","nodeType":"VariableDeclaration","overrides":null,"scope":7808,"src":"3779:22:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7708,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"3779:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"}],"src":"3755:47:23"},"returnParameters":{"id":7713,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7712,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":7808,"src":"3826:16:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7711,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"3826:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"}],"src":"3825:18:23"},"scope":8007,"src":"3741:693:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7897,"nodeType":"Block","src":"4649:607:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7818,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7812,"src":"4667:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4681:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4667:15:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f","id":7821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4684:40:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5e8a6c8dfacd0a41f2501735d8ee26d996b9e7e81ff5467dfdfd11a3728a15e7","typeString":"literal_string \"FixedPoint::fraction: division by zero\""},"value":"FixedPoint::fraction: division by zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e8a6c8dfacd0a41f2501735d8ee26d996b9e7e81ff5467dfdfd11a3728a15e7","typeString":"literal_string \"FixedPoint::fraction: division by zero\""}],"id":7817,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4659:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4659:66:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7823,"nodeType":"ExpressionStatement","src":"4659:66:23"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7824,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7810,"src":"4739:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4752:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4739:14:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7832,"nodeType":"IfStatement","src":"4735:50:23","trueBody":{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":7829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4783:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"argumentTypes":null,"id":7827,"name":"FixedPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8007,"src":"4762:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FixedPoint_$8007_$","typeString":"type(library FixedPoint)"}},"id":7828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"uq112x112","nodeType":"MemberAccess","referencedDeclaration":7386,"src":"4762:20:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":7830,"isConstant":false,"isLValue":false,"isPure":true,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4762:23:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":7816,"id":7831,"nodeType":"Return","src":"4755:30:23"}},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7833,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7810,"src":"4800:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7837,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4821:2:23","subExpression":{"argumentTypes":null,"hexValue":"31","id":7836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4822:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4813:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":7834,"name":"uint144","nodeType":"ElementaryTypeName","src":"4813:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7838,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4813:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"4800:24:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":7895,"nodeType":"Block","src":"5038:212:23","statements":[{"assignments":[7869],"declarations":[{"constant":false,"id":7869,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","overrides":null,"scope":7895,"src":"5052:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7868,"name":"uint256","nodeType":"ElementaryTypeName","src":"5052:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7876,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7872,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7810,"src":"5085:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":7873,"name":"Q112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7395,"src":"5096:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":7874,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7812,"src":"5102:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":7870,"name":"FullMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8228,"src":"5069:8:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_FullMath_$8228_$","typeString":"type(library FullMath)"}},"id":7871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mulDiv","nodeType":"MemberAccess","referencedDeclaration":8227,"src":"5069:15:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":7875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5069:45:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5052:62:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7878,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7869,"src":"5136:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"5154:2:23","subExpression":{"argumentTypes":null,"hexValue":"31","id":7881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5155:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5146:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7879,"name":"uint224","nodeType":"ElementaryTypeName","src":"5146:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5146:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"5136:21:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f77","id":7885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5159:32:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9fe8d10e95984e9ccfd1797a961d8375075b4df29dfe16192bd5e7445ed87d53","typeString":"literal_string \"FixedPoint::fraction: overflow\""},"value":"FixedPoint::fraction: overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe8d10e95984e9ccfd1797a961d8375075b4df29dfe16192bd5e7445ed87d53","typeString":"literal_string \"FixedPoint::fraction: overflow\""}],"id":7877,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5128:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5128:64:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7887,"nodeType":"ExpressionStatement","src":"5128:64:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7891,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7869,"src":"5231:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5223:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7889,"name":"uint224","nodeType":"ElementaryTypeName","src":"5223:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5223:15:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7888,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7386,"src":"5213:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":7893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5213:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":7816,"id":7894,"nodeType":"Return","src":"5206:33:23"}]},"id":7896,"nodeType":"IfStatement","src":"4796:454:23","trueBody":{"id":7867,"nodeType":"Block","src":"4826:206:23","statements":[{"assignments":[7841],"declarations":[{"constant":false,"id":7841,"mutability":"mutable","name":"result","nodeType":"VariableDeclaration","overrides":null,"scope":7867,"src":"4840:14:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7840,"name":"uint256","nodeType":"ElementaryTypeName","src":"4840:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":7848,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7847,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7842,"name":"numerator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7810,"src":"4858:9:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"argumentTypes":null,"id":7843,"name":"RESOLUTION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7392,"src":"4871:10:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4858:23:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":7845,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4857:25:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":7846,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7812,"src":"4885:11:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4857:39:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4840:56:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7850,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7841,"src":"4918:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"4936:2:23","subExpression":{"argumentTypes":null,"hexValue":"31","id":7853,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4937:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7852,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4928:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7851,"name":"uint224","nodeType":"ElementaryTypeName","src":"4928:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7855,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4928:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"4918:21:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f77","id":7857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4941:32:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9fe8d10e95984e9ccfd1797a961d8375075b4df29dfe16192bd5e7445ed87d53","typeString":"literal_string \"FixedPoint::fraction: overflow\""},"value":"FixedPoint::fraction: overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe8d10e95984e9ccfd1797a961d8375075b4df29dfe16192bd5e7445ed87d53","typeString":"literal_string \"FixedPoint::fraction: overflow\""}],"id":7849,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4910:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4910:64:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7859,"nodeType":"ExpressionStatement","src":"4910:64:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7863,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7841,"src":"5013:6:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5005:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7861,"name":"uint224","nodeType":"ElementaryTypeName","src":"5005:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5005:15:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7860,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7386,"src":"4995:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":7865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4995:26:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":7816,"id":7866,"nodeType":"Return","src":"4988:33:23"}]}}]},"documentation":null,"id":7898,"implemented":true,"kind":"function","modifiers":[],"name":"fraction","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7810,"mutability":"mutable","name":"numerator","nodeType":"VariableDeclaration","overrides":null,"scope":7898,"src":"4568:17:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7809,"name":"uint256","nodeType":"ElementaryTypeName","src":"4568:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":7812,"mutability":"mutable","name":"denominator","nodeType":"VariableDeclaration","overrides":null,"scope":7898,"src":"4587:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7811,"name":"uint256","nodeType":"ElementaryTypeName","src":"4587:7:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"4567:40:23"},"returnParameters":{"id":7816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7815,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":7898,"src":"4631:16:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7814,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"4631:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"}],"src":"4630:18:23"},"scope":8007,"src":"4550:706:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7931,"nodeType":"Block","src":"5428:202:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7906,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7900,"src":"5446:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7907,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"5446:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"30","id":7908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5457:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5446:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4669786564506f696e743a3a7265636970726f63616c3a207265636970726f63616c206f66207a65726f","id":7910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5460:44:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d3029a5a93a398fe526ba88b78683cb8409b11161a7a6252d5ccb5c8f4f8aea1","typeString":"literal_string \"FixedPoint::reciprocal: reciprocal of zero\""},"value":"FixedPoint::reciprocal: reciprocal of zero"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d3029a5a93a398fe526ba88b78683cb8409b11161a7a6252d5ccb5c8f4f8aea1","typeString":"literal_string \"FixedPoint::reciprocal: reciprocal of zero\""}],"id":7905,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5438:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5438:67:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7912,"nodeType":"ExpressionStatement","src":"5438:67:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7914,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7900,"src":"5523:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7915,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"5523:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"hexValue":"31","id":7916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5534:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5523:12:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"4669786564506f696e743a3a7265636970726f63616c3a206f766572666c6f77","id":7918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5537:34:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d0c2f767026b31296fb6fcaacdf9d3529986be99f9a71f7d756dd15015fdbac1","typeString":"literal_string \"FixedPoint::reciprocal: overflow\""},"value":"FixedPoint::reciprocal: overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d0c2f767026b31296fb6fcaacdf9d3529986be99f9a71f7d756dd15015fdbac1","typeString":"literal_string \"FixedPoint::reciprocal: overflow\""}],"id":7913,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5515:7:23","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":7919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5515:57:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7920,"nodeType":"ExpressionStatement","src":"5515:57:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7924,"name":"Q224","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7398,"src":"5607:4:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7925,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7900,"src":"5614:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"5614:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"5607:14:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5599:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7922,"name":"uint224","nodeType":"ElementaryTypeName","src":"5599:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5599:23:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7921,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7386,"src":"5589:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":7929,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5589:34:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":7904,"id":7930,"nodeType":"Return","src":"5582:41:23"}]},"documentation":null,"id":7932,"implemented":true,"kind":"function","modifiers":[],"name":"reciprocal","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7900,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","overrides":null,"scope":7932,"src":"5364:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7899,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"5364:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"}],"src":"5363:23:23"},"returnParameters":{"id":7904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7903,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":7932,"src":"5410:16:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7902,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"5410:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"}],"src":"5409:18:23"},"scope":8007,"src":"5344:286:23","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8005,"nodeType":"Block","src":"5785:372:23","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint224","typeString":"uint224"},"id":7946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7939,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7934,"src":"5799:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"5799:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":7944,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"5818:2:23","subExpression":{"argumentTypes":null,"hexValue":"31","id":7943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5819:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":7942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5810:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":7941,"name":"uint144","nodeType":"ElementaryTypeName","src":"5810:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5810:11:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"5799:22:23","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":7964,"nodeType":"IfStatement","src":"5795:120:23","trueBody":{"id":7963,"nodeType":"Block","src":"5823:92:23","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7954,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7934,"src":"5886:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7955,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"5886:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5878:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7952,"name":"uint256","nodeType":"ElementaryTypeName","src":"5878:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5878:16:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"argumentTypes":null,"hexValue":"313132","id":7957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5898:3:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},"src":"5878:23:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":7950,"name":"Babylonian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"5862:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Babylonian_$7100_$","typeString":"type(library Babylonian)"}},"id":7951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":7099,"src":"5862:15:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5862:40:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5854:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7948,"name":"uint224","nodeType":"ElementaryTypeName","src":"5854:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5854:49:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7947,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7386,"src":"5844:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":7961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5844:60:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":7938,"id":7962,"nodeType":"Return","src":"5837:67:23"}]}},{"assignments":[7966],"declarations":[{"constant":false,"id":7966,"mutability":"mutable","name":"safeShiftBits","nodeType":"VariableDeclaration","overrides":null,"scope":8005,"src":"5925:19:23","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7965,"name":"uint8","nodeType":"ElementaryTypeName","src":"5925:5:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"}],"id":7974,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"323535","id":7967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5947:3:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7970,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7934,"src":"5980:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7971,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"5980:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"expression":{"argumentTypes":null,"id":7968,"name":"BitMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7378,"src":"5953:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_BitMath_$7378_$","typeString":"type(library BitMath)"}},"id":7969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mostSignificantBit","nodeType":"MemberAccess","referencedDeclaration":7216,"src":"5953:26:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint8_$","typeString":"function (uint256) pure returns (uint8)"}},"id":7972,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5953:35:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5947:41:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"5925:63:23"},{"expression":{"argumentTypes":null,"id":7979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":7975,"name":"safeShiftBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7966,"src":"5998:13:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":7976,"name":"safeShiftBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7966,"src":"6015:13:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"argumentTypes":null,"hexValue":"32","id":7977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6031:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6015:17:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"5998:34:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":7980,"nodeType":"ExpressionStatement","src":"5998:34:23"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":7988,"name":"self","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7934,"src":"6091:4:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"id":7989,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_x","nodeType":"MemberAccess","referencedDeclaration":7385,"src":"6091:7:23","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7987,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6083:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7986,"name":"uint256","nodeType":"ElementaryTypeName","src":"6083:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":7990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6083:16:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"argumentTypes":null,"id":7991,"name":"safeShiftBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7966,"src":"6103:13:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6083:33:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":7984,"name":"Babylonian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7100,"src":"6067:10:23","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Babylonian_$7100_$","typeString":"type(library Babylonian)"}},"id":7985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sqrt","nodeType":"MemberAccess","referencedDeclaration":7099,"src":"6067:15:23","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":7993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6067:50:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":7996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"313132","id":7994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6123:3:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":7995,"name":"safeShiftBits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7966,"src":"6129:13:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6123:19:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":7997,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6122:21:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"hexValue":"32","id":7998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6146:1:23","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"6122:25:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":8000,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6121:27:23","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6067:81:23","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7983,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6059:7:23","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":7982,"name":"uint224","nodeType":"ElementaryTypeName","src":"6059:7:23","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":8002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6059:90:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint224","typeString":"uint224"}],"id":7981,"name":"uq112x112","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7386,"src":"6049:9:23","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_uq112x112_$7386_storage_ptr_$","typeString":"type(struct FixedPoint.uq112x112 storage pointer)"}},"id":8003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6049:101:23","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112 memory"}},"functionReturnParameters":7938,"id":8004,"nodeType":"Return","src":"6042:108:23"}]},"documentation":null,"id":8006,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":7935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7934,"mutability":"mutable","name":"self","nodeType":"VariableDeclaration","overrides":null,"scope":8006,"src":"5721:21:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7933,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"5721:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"}],"src":"5720:23:23"},"returnParameters":{"id":7938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7937,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":8006,"src":"5767:16:23","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_memory_ptr","typeString":"struct FixedPoint.uq112x112"},"typeName":{"contractScope":null,"id":7936,"name":"uq112x112","nodeType":"UserDefinedTypeName","referencedDeclaration":7386,"src":"5767:9:23","typeDescriptions":{"typeIdentifier":"t_struct$_uq112x112_$7386_storage_ptr","typeString":"struct FixedPoint.uq112x112"}},"value":null,"visibility":"internal"}],"src":"5766:18:23"},"scope":8007,"src":"5707:450:23","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8008,"src":"275:5884:23"}],"src":"45:6115:23"},"id":23},"contracts/periphery/libraries/FullMath.sol":{"ast":{"absolutePath":"contracts/periphery/libraries/FullMath.sol","exportedSymbols":{"FullMath":[8228]},"id":8229,"nodeType":"SourceUnit","nodes":[{"id":8009,"literals":["solidity",">=","0.4",".0"],"nodeType":"PragmaDirective","src":"38:24:24"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":null,"fullyImplemented":true,"id":8228,"linearizedBaseContracts":[8228],"name":"FullMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":8052,"nodeType":"Block","src":"300:122:24","statements":[{"assignments":[8021],"declarations":[{"constant":false,"id":8021,"mutability":"mutable","name":"mm","nodeType":"VariableDeclaration","overrides":null,"scope":8052,"src":"310:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8020,"name":"uint256","nodeType":"ElementaryTypeName","src":"310:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8031,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8023,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8011,"src":"330:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8024,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8013,"src":"333:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8028,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"344:2:24","subExpression":{"argumentTypes":null,"hexValue":"31","id":8027,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"345:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":8026,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"336:7:24","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8025,"name":"uint256","nodeType":"ElementaryTypeName","src":"336:7:24","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":8029,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"336:11:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8022,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"323:6:24","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"323:25:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"310:38:24"},{"expression":{"argumentTypes":null,"id":8036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8032,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8016,"src":"358:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8033,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8011,"src":"362:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":8034,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8013,"src":"366:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"362:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"358:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8037,"nodeType":"ExpressionStatement","src":"358:9:24"},{"expression":{"argumentTypes":null,"id":8042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8038,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8018,"src":"377:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8039,"name":"mm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8021,"src":"381:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":8040,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8016,"src":"386:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"381:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"377:10:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8043,"nodeType":"ExpressionStatement","src":"377:10:24"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8044,"name":"mm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8021,"src":"401:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":8045,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8016,"src":"406:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"401:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8051,"nodeType":"IfStatement","src":"397:18:24","trueBody":{"expression":{"argumentTypes":null,"id":8049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8047,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8018,"src":"409:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"hexValue":"31","id":8048,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"414:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"409:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8050,"nodeType":"ExpressionStatement","src":"409:6:24"}}]},"documentation":null,"id":8053,"implemented":true,"kind":"function","modifiers":[],"name":"fullMul","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8011,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","overrides":null,"scope":8053,"src":"233:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8010,"name":"uint256","nodeType":"ElementaryTypeName","src":"233:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8013,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","overrides":null,"scope":8053,"src":"244:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8012,"name":"uint256","nodeType":"ElementaryTypeName","src":"244:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"232:22:24"},"returnParameters":{"id":8019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8016,"mutability":"mutable","name":"l","nodeType":"VariableDeclaration","overrides":null,"scope":8053,"src":"278:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8015,"name":"uint256","nodeType":"ElementaryTypeName","src":"278:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8018,"mutability":"mutable","name":"h","nodeType":"VariableDeclaration","overrides":null,"scope":8053,"src":"289:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8017,"name":"uint256","nodeType":"ElementaryTypeName","src":"289:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"277:22:24"},"scope":8228,"src":"216:206:24","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8164,"nodeType":"Block","src":"539:352:24","statements":[{"assignments":[8065],"declarations":[{"constant":false,"id":8065,"mutability":"mutable","name":"pow2","nodeType":"VariableDeclaration","overrides":null,"scope":8164,"src":"549:12:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8064,"name":"uint256","nodeType":"ElementaryTypeName","src":"549:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8070,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8066,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"564:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"argumentTypes":null,"id":8068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"568:2:24","subExpression":{"argumentTypes":null,"id":8067,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"569:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"564:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"549:21:24"},{"expression":{"argumentTypes":null,"id":8073,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8071,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"580:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"argumentTypes":null,"id":8072,"name":"pow2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"585:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"580:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8074,"nodeType":"ExpressionStatement","src":"580:9:24"},{"expression":{"argumentTypes":null,"id":8077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8075,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8055,"src":"599:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"argumentTypes":null,"id":8076,"name":"pow2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"604:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"599:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8078,"nodeType":"ExpressionStatement","src":"599:9:24"},{"expression":{"argumentTypes":null,"id":8090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8079,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8055,"src":"618:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8089,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8080,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8057,"src":"623:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":8082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"629:5:24","subExpression":{"argumentTypes":null,"id":8081,"name":"pow2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"630:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8083,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"628:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":8084,"name":"pow2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8065,"src":"638:4:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"628:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"hexValue":"31","id":8086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"645:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"628:18:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8088,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"627:20:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"623:24:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"618:29:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8091,"nodeType":"ExpressionStatement","src":"618:29:24"},{"assignments":[8093],"declarations":[{"constant":false,"id":8093,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":8164,"src":"657:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8092,"name":"uint256","nodeType":"ElementaryTypeName","src":"657:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8095,"initialValue":{"argumentTypes":null,"hexValue":"31","id":8094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"669:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"657:13:24"},{"expression":{"argumentTypes":null,"id":8102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8096,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"680:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":8097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"685:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8098,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"689:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":8099,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"693:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"689:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"685:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"680:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8103,"nodeType":"ExpressionStatement","src":"680:14:24"},{"expression":{"argumentTypes":null,"id":8110,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8104,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"704:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":8105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"709:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8106,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"713:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":8107,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"717:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"713:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"709:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"704:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8111,"nodeType":"ExpressionStatement","src":"704:14:24"},{"expression":{"argumentTypes":null,"id":8118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8112,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"728:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":8113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"733:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8114,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"737:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":8115,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"741:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"737:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"733:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"728:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8119,"nodeType":"ExpressionStatement","src":"728:14:24"},{"expression":{"argumentTypes":null,"id":8126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8120,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"752:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":8121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"757:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8122,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"761:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":8123,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"765:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"761:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"757:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"752:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8127,"nodeType":"ExpressionStatement","src":"752:14:24"},{"expression":{"argumentTypes":null,"id":8134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8128,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"776:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":8129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"781:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8130,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"785:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":8131,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"789:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"785:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"781:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"776:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8135,"nodeType":"ExpressionStatement","src":"776:14:24"},{"expression":{"argumentTypes":null,"id":8142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8136,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"800:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":8137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"805:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8138,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"809:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":8139,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"813:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"809:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"805:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"800:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8143,"nodeType":"ExpressionStatement","src":"800:14:24"},{"expression":{"argumentTypes":null,"id":8150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8144,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"824:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":8145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"829:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8146,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"833:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":8147,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"837:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"833:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"829:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"824:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8151,"nodeType":"ExpressionStatement","src":"824:14:24"},{"expression":{"argumentTypes":null,"id":8158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8152,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"848:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"hexValue":"32","id":8153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"853:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8154,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8059,"src":"857:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":8155,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"861:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"857:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"853:9:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"848:14:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8159,"nodeType":"ExpressionStatement","src":"848:14:24"},{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8160,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8055,"src":"879:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":8161,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8093,"src":"883:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"879:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8063,"id":8163,"nodeType":"Return","src":"872:12:24"}]},"documentation":null,"id":8165,"implemented":true,"kind":"function","modifiers":[],"name":"fullDiv","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8055,"mutability":"mutable","name":"l","nodeType":"VariableDeclaration","overrides":null,"scope":8165,"src":"454:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8054,"name":"uint256","nodeType":"ElementaryTypeName","src":"454:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8057,"mutability":"mutable","name":"h","nodeType":"VariableDeclaration","overrides":null,"scope":8165,"src":"473:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8056,"name":"uint256","nodeType":"ElementaryTypeName","src":"473:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8059,"mutability":"mutable","name":"d","nodeType":"VariableDeclaration","overrides":null,"scope":8165,"src":"492:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8058,"name":"uint256","nodeType":"ElementaryTypeName","src":"492:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"444:63:24"},"returnParameters":{"id":8063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8062,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":8165,"src":"530:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8061,"name":"uint256","nodeType":"ElementaryTypeName","src":"530:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"529:9:24"},"scope":8228,"src":"428:463:24","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":8226,"nodeType":"Block","src":"1008:262:24","statements":[{"assignments":[8177,8179],"declarations":[{"constant":false,"id":8177,"mutability":"mutable","name":"l","nodeType":"VariableDeclaration","overrides":null,"scope":8226,"src":"1019:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8176,"name":"uint256","nodeType":"ElementaryTypeName","src":"1019:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8179,"mutability":"mutable","name":"h","nodeType":"VariableDeclaration","overrides":null,"scope":8226,"src":"1030:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8178,"name":"uint256","nodeType":"ElementaryTypeName","src":"1030:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8184,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8181,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8167,"src":"1051:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8182,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8169,"src":"1054:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8180,"name":"fullMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8053,"src":"1043:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":8183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1043:13:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"1018:38:24"},{"assignments":[8186],"declarations":[{"constant":false,"id":8186,"mutability":"mutable","name":"mm","nodeType":"VariableDeclaration","overrides":null,"scope":8226,"src":"1067:10:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8185,"name":"uint256","nodeType":"ElementaryTypeName","src":"1067:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8192,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8188,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8167,"src":"1087:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8189,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8169,"src":"1090:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8190,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8171,"src":"1093:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8187,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"1080:6:24","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1080:15:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1067:28:24"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8195,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8193,"name":"mm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8186,"src":"1109:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"argumentTypes":null,"id":8194,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8177,"src":"1114:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1109:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8200,"nodeType":"IfStatement","src":"1105:18:24","trueBody":{"expression":{"argumentTypes":null,"id":8198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8196,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8179,"src":"1117:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"hexValue":"31","id":8197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1122:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1117:6:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8199,"nodeType":"ExpressionStatement","src":"1117:6:24"}},{"expression":{"argumentTypes":null,"id":8203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8201,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8177,"src":"1133:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"argumentTypes":null,"id":8202,"name":"mm","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8186,"src":"1138:2:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1133:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8204,"nodeType":"ExpressionStatement","src":"1133:7:24"},{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8205,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8179,"src":"1155:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":8206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1160:1:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1155:6:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8212,"nodeType":"IfStatement","src":"1151:24:24","trueBody":{"expression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8208,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8177,"src":"1170:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":8209,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8171,"src":"1174:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1170:5:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8175,"id":8211,"nodeType":"Return","src":"1163:12:24"}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8214,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8179,"src":"1194:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"argumentTypes":null,"id":8215,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8171,"src":"1198:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1194:5:24","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57","id":8217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1201:28:24","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_9573a614b6ab65c92932376c168e5635a05a20769ae8cb8b8a2d9575aad107da","typeString":"literal_string \"FullMath: FULLDIV_OVERFLOW\""},"value":"FullMath: FULLDIV_OVERFLOW"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9573a614b6ab65c92932376c168e5635a05a20769ae8cb8b8a2d9575aad107da","typeString":"literal_string \"FullMath: FULLDIV_OVERFLOW\""}],"id":8213,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1186:7:24","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1186:44:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8219,"nodeType":"ExpressionStatement","src":"1186:44:24"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8221,"name":"l","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8177,"src":"1255:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8222,"name":"h","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8179,"src":"1258:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8223,"name":"d","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8171,"src":"1261:1:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8220,"name":"fullDiv","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8165,"src":"1247:7:24","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":8224,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1247:16:24","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":8175,"id":8225,"nodeType":"Return","src":"1240:23:24"}]},"documentation":null,"id":8227,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8172,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8167,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","overrides":null,"scope":8227,"src":"922:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8166,"name":"uint256","nodeType":"ElementaryTypeName","src":"922:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8169,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","overrides":null,"scope":8227,"src":"941:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8168,"name":"uint256","nodeType":"ElementaryTypeName","src":"941:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8171,"mutability":"mutable","name":"d","nodeType":"VariableDeclaration","overrides":null,"scope":8227,"src":"960:9:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8170,"name":"uint256","nodeType":"ElementaryTypeName","src":"960:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"912:63:24"},"returnParameters":{"id":8175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8174,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":8227,"src":"999:7:24","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8173,"name":"uint256","nodeType":"ElementaryTypeName","src":"999:7:24","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"998:9:24"},"scope":8228,"src":"897:373:24","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8229,"src":"193:1079:24"}],"src":"38:1235:24"},"id":24},"contracts/periphery/libraries/SafeMath.sol":{"ast":{"absolutePath":"contracts/periphery/libraries/SafeMath.sol","exportedSymbols":{"SafeMath":[8303]},"id":8304,"nodeType":"SourceUnit","nodes":[{"id":8230,"literals":["solidity","=","0.6",".6"],"nodeType":"PragmaDirective","src":"0:23:25"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":null,"fullyImplemented":true,"id":8303,"linearizedBaseContracts":[8303],"name":"SafeMath","nodeType":"ContractDefinition","nodes":[{"body":{"id":8251,"nodeType":"Block","src":"214:66:25","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8247,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":8244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8240,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8237,"src":"233:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8241,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8232,"src":"237:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"argumentTypes":null,"id":8242,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8234,"src":"241:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"237:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"233:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8245,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"232:11:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"id":8246,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8232,"src":"247:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"232:16:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"64732d6d6174682d6164642d6f766572666c6f77","id":8248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"250:22:25","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db","typeString":"literal_string \"ds-math-add-overflow\""},"value":"ds-math-add-overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db","typeString":"literal_string \"ds-math-add-overflow\""}],"id":8239,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"224:7:25","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"224:49:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8250,"nodeType":"ExpressionStatement","src":"224:49:25"}]},"documentation":null,"id":8252,"implemented":true,"kind":"function","modifiers":[],"name":"add","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8232,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","overrides":null,"scope":8252,"src":"167:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8231,"name":"uint","nodeType":"ElementaryTypeName","src":"167:4:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8234,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","overrides":null,"scope":8252,"src":"175:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8233,"name":"uint","nodeType":"ElementaryTypeName","src":"175:4:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"166:16:25"},"returnParameters":{"id":8238,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8237,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","overrides":null,"scope":8252,"src":"206:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8236,"name":"uint","nodeType":"ElementaryTypeName","src":"206:4:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"205:8:25"},"scope":8303,"src":"154:126:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8273,"nodeType":"Block","src":"346:67:25","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":8266,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8262,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8259,"src":"365:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8263,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8254,"src":"369:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"argumentTypes":null,"id":8264,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8256,"src":"373:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"369:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"365:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8267,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"364:11:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"argumentTypes":null,"id":8268,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8254,"src":"379:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"364:16:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"64732d6d6174682d7375622d756e646572666c6f77","id":8270,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"382:23:25","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590","typeString":"literal_string \"ds-math-sub-underflow\""},"value":"ds-math-sub-underflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590","typeString":"literal_string \"ds-math-sub-underflow\""}],"id":8261,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"356:7:25","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"356:50:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8272,"nodeType":"ExpressionStatement","src":"356:50:25"}]},"documentation":null,"id":8274,"implemented":true,"kind":"function","modifiers":[],"name":"sub","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8254,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","overrides":null,"scope":8274,"src":"299:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8253,"name":"uint","nodeType":"ElementaryTypeName","src":"299:4:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8256,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","overrides":null,"scope":8274,"src":"307:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8255,"name":"uint","nodeType":"ElementaryTypeName","src":"307:4:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"298:16:25"},"returnParameters":{"id":8260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8259,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","overrides":null,"scope":8274,"src":"338:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8258,"name":"uint","nodeType":"ElementaryTypeName","src":"338:4:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"337:8:25"},"scope":8303,"src":"286:127:25","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":8301,"nodeType":"Block","src":"479:80:25","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8284,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8278,"src":"497:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":8285,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"502:1:25","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"497:6:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"id":8291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8287,"name":"z","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8281,"src":"508:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8288,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8276,"src":"512:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"argumentTypes":null,"id":8289,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8278,"src":"516:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"512:5:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"508:9:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":8292,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"507:11:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"id":8293,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8278,"src":"521:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"507:15:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":8295,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8276,"src":"526:1:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"507:20:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"497:30:25","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"64732d6d6174682d6d756c2d6f766572666c6f77","id":8298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"529:22:25","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd","typeString":"literal_string \"ds-math-mul-overflow\""},"value":"ds-math-mul-overflow"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd","typeString":"literal_string \"ds-math-mul-overflow\""}],"id":8283,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"489:7:25","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8299,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"489:63:25","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8300,"nodeType":"ExpressionStatement","src":"489:63:25"}]},"documentation":null,"id":8302,"implemented":true,"kind":"function","modifiers":[],"name":"mul","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8276,"mutability":"mutable","name":"x","nodeType":"VariableDeclaration","overrides":null,"scope":8302,"src":"432:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8275,"name":"uint","nodeType":"ElementaryTypeName","src":"432:4:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8278,"mutability":"mutable","name":"y","nodeType":"VariableDeclaration","overrides":null,"scope":8302,"src":"440:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8277,"name":"uint","nodeType":"ElementaryTypeName","src":"440:4:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"431:16:25"},"returnParameters":{"id":8282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8281,"mutability":"mutable","name":"z","nodeType":"VariableDeclaration","overrides":null,"scope":8302,"src":"471:6:25","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8280,"name":"uint","nodeType":"ElementaryTypeName","src":"471:4:25","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"470:8:25"},"scope":8303,"src":"419:140:25","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":8304,"src":"131:430:25"}],"src":"0:562:25"},"id":25},"contracts/periphery/libraries/TransferHelper.sol":{"ast":{"absolutePath":"contracts/periphery/libraries/TransferHelper.sol","exportedSymbols":{"TransferHelper":[8463]},"id":8464,"nodeType":"SourceUnit","nodes":[{"id":8305,"literals":["solidity",">=","0.6",".0"],"nodeType":"PragmaDirective","src":"46:24:26"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"library","documentation":null,"fullyImplemented":true,"id":8463,"linearizedBaseContracts":[8463],"name":"TransferHelper","nodeType":"ContractDefinition","nodes":[{"body":{"id":8347,"nodeType":"Block","src":"314:332:26","statements":[{"assignments":[8315,8317],"declarations":[{"constant":false,"id":8315,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":8347,"src":"390:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8314,"name":"bool","nodeType":"ElementaryTypeName","src":"390:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":8317,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","overrides":null,"scope":8347,"src":"404:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8316,"name":"bytes","nodeType":"ElementaryTypeName","src":"404:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":8327,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30783039356561376233","id":8322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"459:10:26","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_157198259_by_1","typeString":"int_const 157198259"},"value":"0x095ea7b3"},{"argumentTypes":null,"id":8323,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8309,"src":"471:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8311,"src":"475:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_157198259_by_1","typeString":"int_const 157198259"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":8320,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"436:3:26","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"436:22:26","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":8325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"436:45:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":8318,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8307,"src":"425:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"425:10:26","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":8326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"425:57:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"389:93:26"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8329,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8315,"src":"513:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8330,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8317,"src":"525:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"525:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":8332,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"540:1:26","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"525:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8336,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8317,"src":"556:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"id":8338,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"563:4:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":8337,"name":"bool","nodeType":"ElementaryTypeName","src":"563:4:26","typeDescriptions":{"typeIdentifier":null,"typeString":null}}}],"id":8339,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"562:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"argumentTypes":null,"id":8334,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"545:3:26","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"545:10:26","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":8340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"545:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"525:44:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8342,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"524:46:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"513:57:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c6564","id":8344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"584:45:26","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_b4dd1eb4be82119fd3a99acfb5dd4c57591eb0ea309359b1af3d65a4460c7123","typeString":"literal_string \"TransferHelper::safeApprove: approve failed\""},"value":"TransferHelper::safeApprove: approve failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b4dd1eb4be82119fd3a99acfb5dd4c57591eb0ea309359b1af3d65a4460c7123","typeString":"literal_string \"TransferHelper::safeApprove: approve failed\""}],"id":8328,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"492:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8345,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"492:147:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8346,"nodeType":"ExpressionStatement","src":"492:147:26"}]},"documentation":null,"id":8348,"implemented":true,"kind":"function","modifiers":[],"name":"safeApprove","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8307,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":8348,"src":"242:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8306,"name":"address","nodeType":"ElementaryTypeName","src":"242:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8309,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":8348,"src":"265:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8308,"name":"address","nodeType":"ElementaryTypeName","src":"265:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8311,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8348,"src":"285:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8310,"name":"uint256","nodeType":"ElementaryTypeName","src":"285:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"232:72:26"},"returnParameters":{"id":8313,"nodeType":"ParameterList","parameters":[],"src":"314:0:26"},"scope":8463,"src":"212:434:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8390,"nodeType":"Block","src":"755:335:26","statements":[{"assignments":[8358,8360],"declarations":[{"constant":false,"id":8358,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":8390,"src":"832:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8357,"name":"bool","nodeType":"ElementaryTypeName","src":"832:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":8360,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","overrides":null,"scope":8390,"src":"846:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8359,"name":"bytes","nodeType":"ElementaryTypeName","src":"846:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":8370,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30786139303539636262","id":8365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"901:10:26","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_2835717307_by_1","typeString":"int_const 2835717307"},"value":"0xa9059cbb"},{"argumentTypes":null,"id":8366,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8352,"src":"913:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8367,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8354,"src":"917:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_2835717307_by_1","typeString":"int_const 2835717307"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":8363,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"878:3:26","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8364,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"878:22:26","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":8368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"878:45:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":8361,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8350,"src":"867:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"867:10:26","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":8369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"867:57:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"831:93:26"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8372,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8358,"src":"955:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8373,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"967:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"967:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":8375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"982:1:26","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"967:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8379,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8360,"src":"998:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"id":8381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1005:4:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":8380,"name":"bool","nodeType":"ElementaryTypeName","src":"1005:4:26","typeDescriptions":{"typeIdentifier":null,"typeString":null}}}],"id":8382,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1004:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"argumentTypes":null,"id":8377,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"987:3:26","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8378,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"987:10:26","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":8383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"987:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"967:44:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8385,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"966:46:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"955:57:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564","id":8387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1026:47:26","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_daea69421eeb1164e163c36f3d4349f0db3ec4e0d1381bd5bf4faf53496c2611","typeString":"literal_string \"TransferHelper::safeTransfer: transfer failed\""},"value":"TransferHelper::safeTransfer: transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_daea69421eeb1164e163c36f3d4349f0db3ec4e0d1381bd5bf4faf53496c2611","typeString":"literal_string \"TransferHelper::safeTransfer: transfer failed\""}],"id":8371,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"934:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8388,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"934:149:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8389,"nodeType":"ExpressionStatement","src":"934:149:26"}]},"documentation":null,"id":8391,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransfer","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8350,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":8391,"src":"683:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8349,"name":"address","nodeType":"ElementaryTypeName","src":"683:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8352,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":8391,"src":"706:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8351,"name":"address","nodeType":"ElementaryTypeName","src":"706:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8354,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8391,"src":"726:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8353,"name":"uint256","nodeType":"ElementaryTypeName","src":"726:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"673:72:26"},"returnParameters":{"id":8356,"nodeType":"ParameterList","parameters":[],"src":"755:0:26"},"scope":8463,"src":"652:438:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8436,"nodeType":"Block","src":"1225:357:26","statements":[{"assignments":[8403,8405],"declarations":[{"constant":false,"id":8403,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":8436,"src":"1314:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8402,"name":"bool","nodeType":"ElementaryTypeName","src":"1314:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":8405,"mutability":"mutable","name":"data","nodeType":"VariableDeclaration","overrides":null,"scope":8436,"src":"1328:17:26","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":8404,"name":"bytes","nodeType":"ElementaryTypeName","src":"1328:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":8416,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30783233623837326464","id":8410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1383:10:26","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_599290589_by_1","typeString":"int_const 599290589"},"value":"0x23b872dd"},{"argumentTypes":null,"id":8411,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8395,"src":"1395:4:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8412,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8397,"src":"1401:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8413,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8399,"src":"1405:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_599290589_by_1","typeString":"int_const 599290589"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":8408,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1360:3:26","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1360:22:26","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":8414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1360:51:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":8406,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8393,"src":"1349:5:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1349:10:26","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":8415,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1349:63:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1313:99:26"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8418,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8403,"src":"1443:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"components":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8422,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8419,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8405,"src":"1455:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":8420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1455:11:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"hexValue":"30","id":8421,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1470:1:26","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1455:16:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8425,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8405,"src":"1486:4:26","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"id":8427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1493:4:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"},"typeName":{"id":8426,"name":"bool","nodeType":"ElementaryTypeName","src":"1493:4:26","typeDescriptions":{"typeIdentifier":null,"typeString":null}}}],"id":8428,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1492:6:26","typeDescriptions":{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"expression":{"argumentTypes":null,"id":8423,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1475:3:26","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1475:10:26","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":8429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1475:24:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1455:44:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":8431,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1454:46:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1443:57:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c6564","id":8433,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1514:51:26","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_3f8faf98afe9344b6d4b0e75b0101259bf282914b3b5a9320c6918b6e27ede1c","typeString":"literal_string \"TransferHelper::transferFrom: transferFrom failed\""},"value":"TransferHelper::transferFrom: transferFrom failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3f8faf98afe9344b6d4b0e75b0101259bf282914b3b5a9320c6918b6e27ede1c","typeString":"literal_string \"TransferHelper::transferFrom: transferFrom failed\""}],"id":8417,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1422:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1422:153:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8435,"nodeType":"ExpressionStatement","src":"1422:153:26"}]},"documentation":null,"id":8437,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8393,"mutability":"mutable","name":"token","nodeType":"VariableDeclaration","overrides":null,"scope":8437,"src":"1131:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8392,"name":"address","nodeType":"ElementaryTypeName","src":"1131:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8395,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":8437,"src":"1154:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8394,"name":"address","nodeType":"ElementaryTypeName","src":"1154:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8397,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":8437,"src":"1176:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8396,"name":"address","nodeType":"ElementaryTypeName","src":"1176:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8399,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8437,"src":"1196:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8398,"name":"uint256","nodeType":"ElementaryTypeName","src":"1196:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1121:94:26"},"returnParameters":{"id":8401,"nodeType":"ParameterList","parameters":[],"src":"1225:0:26"},"scope":8463,"src":"1096:486:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8461,"nodeType":"Block","src":"1649:153:26","statements":[{"assignments":[8445,null],"declarations":[{"constant":false,"id":8445,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":8461,"src":"1660:12:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8444,"name":"bool","nodeType":"ElementaryTypeName","src":"1660:4:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},null],"id":8455,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":8452,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1710:1:26","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1700:9:26","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":8450,"name":"bytes","nodeType":"ElementaryTypeName","src":"1704:5:26","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":8453,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1700:12:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8446,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8439,"src":"1678:2:26","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":8447,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1678:7:26","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":8449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"argumentTypes":null,"id":8448,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8441,"src":"1693:5:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"1678:21:26","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":8454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1678:35:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1659:54:26"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8457,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8445,"src":"1731:7:26","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"5472616e7366657248656c7065723a3a736166655472616e73666572414d423a20414d42207472616e73666572206661696c6564","id":8458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1740:54:26","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_d57fdbe46d5fb4f38087248fef3a308deb9f5ba77514585528bf7bb2cdcfe568","typeString":"literal_string \"TransferHelper::safeTransferAMB: AMB transfer failed\""},"value":"TransferHelper::safeTransferAMB: AMB transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d57fdbe46d5fb4f38087248fef3a308deb9f5ba77514585528bf7bb2cdcfe568","typeString":"literal_string \"TransferHelper::safeTransferAMB: AMB transfer failed\""}],"id":8456,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1723:7:26","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8459,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1723:72:26","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8460,"nodeType":"ExpressionStatement","src":"1723:72:26"}]},"documentation":null,"id":8462,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferAMB","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8439,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":8462,"src":"1613:10:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8438,"name":"address","nodeType":"ElementaryTypeName","src":"1613:7:26","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8441,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8462,"src":"1625:13:26","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8440,"name":"uint256","nodeType":"ElementaryTypeName","src":"1625:7:26","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1612:27:26"},"returnParameters":{"id":8443,"nodeType":"ParameterList","parameters":[],"src":"1649:0:26"},"scope":8463,"src":"1588:214:26","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":8464,"src":"183:1621:26"}],"src":"46:1759:26"},"id":26},"contracts/periphery/test/DeflatingERC20.sol":{"ast":{"absolutePath":"contracts/periphery/test/DeflatingERC20.sol","exportedSymbols":{"DeflatingERC20":[8878]},"id":8879,"nodeType":"SourceUnit","nodes":[{"id":8465,"literals":["solidity","=","0.6",".6"],"nodeType":"PragmaDirective","src":"0:23:27"},{"absolutePath":"contracts/periphery/libraries/SafeMath.sol","file":"../libraries/SafeMath.sol","id":8466,"nodeType":"ImportDirective","scope":8879,"sourceUnit":8304,"src":"25:35:27","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":8878,"linearizedBaseContracts":[8878],"name":"DeflatingERC20","nodeType":"ContractDefinition","nodes":[{"id":8469,"libraryName":{"contractScope":null,"id":8467,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":8303,"src":"98:8:27","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$8303","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"92:27:27","typeName":{"id":8468,"name":"uint256","nodeType":"ElementaryTypeName","src":"111:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"functionSelector":"06fdde03","id":8472,"mutability":"constant","name":"name","nodeType":"VariableDeclaration","overrides":null,"scope":8878,"src":"125:52:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8470,"name":"string","nodeType":"ElementaryTypeName","src":"125:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"4465666c6174696e67205465737420546f6b656e","id":8471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"155:22:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_f89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a","typeString":"literal_string \"Deflating Test Token\""},"value":"Deflating Test Token"},"visibility":"public"},{"constant":true,"functionSelector":"95d89b41","id":8475,"mutability":"constant","name":"symbol","nodeType":"VariableDeclaration","overrides":null,"scope":8878,"src":"183:37:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8473,"name":"string","nodeType":"ElementaryTypeName","src":"183:6:27","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"445454","id":8474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"215:5:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_0862d7701ae2a04548299440d8e9bcde598aaa04f40d2b263697efe0cc6c0bb4","typeString":"literal_string \"DTT\""},"value":"DTT"},"visibility":"public"},{"constant":true,"functionSelector":"313ce567","id":8478,"mutability":"constant","name":"decimals","nodeType":"VariableDeclaration","overrides":null,"scope":8878,"src":"226:35:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8476,"name":"uint8","nodeType":"ElementaryTypeName","src":"226:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"argumentTypes":null,"hexValue":"3138","id":8477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"259:2:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"public"},{"constant":false,"functionSelector":"18160ddd","id":8480,"mutability":"mutable","name":"totalSupply","nodeType":"VariableDeclaration","overrides":null,"scope":8878,"src":"267:26:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8479,"name":"uint256","nodeType":"ElementaryTypeName","src":"267:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"70a08231","id":8484,"mutability":"mutable","name":"balanceOf","nodeType":"VariableDeclaration","overrides":null,"scope":8878,"src":"299:44:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8483,"keyType":{"id":8481,"name":"address","nodeType":"ElementaryTypeName","src":"307:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"299:27:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":8482,"name":"uint256","nodeType":"ElementaryTypeName","src":"318:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"dd62ed3e","id":8490,"mutability":"mutable","name":"allowance","nodeType":"VariableDeclaration","overrides":null,"scope":8878,"src":"349:64:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":8489,"keyType":{"id":8485,"name":"address","nodeType":"ElementaryTypeName","src":"357:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"349:47:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":8488,"keyType":{"id":8486,"name":"address","nodeType":"ElementaryTypeName","src":"376:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"368:27:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":8487,"name":"uint256","nodeType":"ElementaryTypeName","src":"387:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"3644e515","id":8492,"mutability":"mutable","name":"DOMAIN_SEPARATOR","nodeType":"VariableDeclaration","overrides":null,"scope":8878,"src":"420:31:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8491,"name":"bytes32","nodeType":"ElementaryTypeName","src":"420:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"public"},{"constant":true,"functionSelector":"30adf81f","id":8495,"mutability":"constant","name":"PERMIT_TYPEHASH","nodeType":"VariableDeclaration","overrides":null,"scope":8878,"src":"561:116:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8493,"name":"bytes32","nodeType":"ElementaryTypeName","src":"561:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"hexValue":"307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339","id":8494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"611:66:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1","typeString":"int_const 4995...(69 digits omitted)...3241"},"value":"0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"},"visibility":"public"},{"constant":false,"functionSelector":"7ecebe00","id":8499,"mutability":"mutable","name":"nonces","nodeType":"VariableDeclaration","overrides":null,"scope":8878,"src":"683:41:27","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8498,"keyType":{"id":8496,"name":"address","nodeType":"ElementaryTypeName","src":"691:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"683:27:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":8497,"name":"uint256","nodeType":"ElementaryTypeName","src":"702:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"anonymous":false,"documentation":null,"id":8507,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":8506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8501,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":8507,"src":"755:21:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8500,"name":"address","nodeType":"ElementaryTypeName","src":"755:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8503,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":8507,"src":"786:23:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8502,"name":"address","nodeType":"ElementaryTypeName","src":"786:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8505,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8507,"src":"819:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8504,"name":"uint256","nodeType":"ElementaryTypeName","src":"819:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"745:93:27"},"src":"731:108:27"},{"anonymous":false,"documentation":null,"id":8515,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":8514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8509,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":8515,"src":"859:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8508,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8511,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":8515,"src":"881:18:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8510,"name":"address","nodeType":"ElementaryTypeName","src":"881:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8513,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8515,"src":"901:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8512,"name":"uint256","nodeType":"ElementaryTypeName","src":"901:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"858:57:27"},"src":"844:72:27"},{"body":{"id":8558,"nodeType":"Block","src":"963:454:27","statements":[{"assignments":[8521],"declarations":[{"constant":false,"id":8521,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","overrides":null,"scope":8558,"src":"973:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8520,"name":"uint256","nodeType":"ElementaryTypeName","src":"973:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8523,"initialValue":{"argumentTypes":null,"hexValue":"307834313465","id":8522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"991:6:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_16718_by_1","typeString":"int_const 16718"},"value":"0x414e"},"nodeType":"VariableDeclarationStatement","src":"973:24:27"},{"expression":{"argumentTypes":null,"id":8550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8524,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8492,"src":"1007:16:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":8529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1108:84:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":8528,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1077:9:27","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1077:133:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8534,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8472,"src":"1244:4:27","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":8533,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1238:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":8532,"name":"bytes","nodeType":"ElementaryTypeName","src":"1238:5:27","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":8535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1238:11:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8531,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1228:9:27","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1228:22:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31","id":8540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1284:3:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""}],"id":8539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1278:5:27","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":8538,"name":"bytes","nodeType":"ElementaryTypeName","src":"1278:5:27","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":8541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1278:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8537,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1268:9:27","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1268:21:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":8543,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8521,"src":"1307:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8546,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1340:4:27","typeDescriptions":{"typeIdentifier":"t_contract$_DeflatingERC20_$8878","typeString":"contract DeflatingERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_DeflatingERC20_$8878","typeString":"contract DeflatingERC20"}],"id":8545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1332:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8544,"name":"address","nodeType":"ElementaryTypeName","src":"1332:7:27","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":8547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1332:13:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":8526,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1049:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8527,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1049:10:27","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1049:310:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8525,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1026:9:27","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1026:343:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"1007:362:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8551,"nodeType":"ExpressionStatement","src":"1007:362:27"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8553,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1385:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8554,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1385:10:27","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":8555,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8517,"src":"1397:12:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8552,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8594,"src":"1379:5:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1379:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8557,"nodeType":"ExpressionStatement","src":"1379:31:27"}]},"documentation":null,"id":8559,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8517,"mutability":"mutable","name":"_totalSupply","nodeType":"VariableDeclaration","overrides":null,"scope":8559,"src":"934:20:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8516,"name":"uint256","nodeType":"ElementaryTypeName","src":"934:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"933:22:27"},"returnParameters":{"id":8519,"nodeType":"ParameterList","parameters":[],"src":"963:0:27"},"scope":8878,"src":"922:495:27","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":8593,"nodeType":"Block","src":"1474:149:27","statements":[{"expression":{"argumentTypes":null,"id":8571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8566,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"1484:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8569,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8563,"src":"1514:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":8567,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"1498:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8252,"src":"1498:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1498:22:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1484:36:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8572,"nodeType":"ExpressionStatement","src":"1484:36:27"},{"expression":{"argumentTypes":null,"id":8582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8573,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8484,"src":"1530:9:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8575,"indexExpression":{"argumentTypes":null,"id":8574,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8561,"src":"1540:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1530:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8580,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8563,"src":"1564:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8576,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8484,"src":"1546:9:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8578,"indexExpression":{"argumentTypes":null,"id":8577,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8561,"src":"1556:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1546:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8252,"src":"1546:17:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1546:24:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1530:40:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8583,"nodeType":"ExpressionStatement","src":"1530:40:27"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":8587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1602:1:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8586,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1594:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8585,"name":"address","nodeType":"ElementaryTypeName","src":"1594:7:27","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":8588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1594:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":8589,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8561,"src":"1606:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8590,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8563,"src":"1610:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8584,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8515,"src":"1585:8:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1585:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8592,"nodeType":"EmitStatement","src":"1580:36:27"}]},"documentation":null,"id":8594,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8561,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":8594,"src":"1438:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8560,"name":"address","nodeType":"ElementaryTypeName","src":"1438:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8563,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8594,"src":"1450:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8562,"name":"uint256","nodeType":"ElementaryTypeName","src":"1450:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1437:27:27"},"returnParameters":{"id":8565,"nodeType":"ParameterList","parameters":[],"src":"1474:0:27"},"scope":8878,"src":"1423:200:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8628,"nodeType":"Block","src":"1682:155:27","statements":[{"expression":{"argumentTypes":null,"id":8610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8601,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8484,"src":"1692:9:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8603,"indexExpression":{"argumentTypes":null,"id":8602,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"1702:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1692:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8608,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8598,"src":"1730:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8604,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8484,"src":"1710:9:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8606,"indexExpression":{"argumentTypes":null,"id":8605,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"1720:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1710:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"1710:19:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1710:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1692:44:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8611,"nodeType":"ExpressionStatement","src":"1692:44:27"},{"expression":{"argumentTypes":null,"id":8617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8612,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"1746:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8615,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8598,"src":"1776:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":8613,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8480,"src":"1760:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"1760:15:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1760:22:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1746:36:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8618,"nodeType":"ExpressionStatement","src":"1746:36:27"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8620,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8596,"src":"1806:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":8623,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1820:1:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8622,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1812:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8621,"name":"address","nodeType":"ElementaryTypeName","src":"1812:7:27","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":8624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1812:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":8625,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8598,"src":"1824:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8619,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8515,"src":"1797:8:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1797:33:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8627,"nodeType":"EmitStatement","src":"1792:38:27"}]},"documentation":null,"id":8629,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8596,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":8629,"src":"1644:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8595,"name":"address","nodeType":"ElementaryTypeName","src":"1644:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8598,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8629,"src":"1658:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8597,"name":"uint256","nodeType":"ElementaryTypeName","src":"1658:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1643:29:27"},"returnParameters":{"id":8600,"nodeType":"ParameterList","parameters":[],"src":"1682:0:27"},"scope":8878,"src":"1629:208:27","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":8652,"nodeType":"Block","src":"1946:96:27","statements":[{"expression":{"argumentTypes":null,"id":8644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8638,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8490,"src":"1956:9:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8641,"indexExpression":{"argumentTypes":null,"id":8639,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"1966:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1956:16:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8642,"indexExpression":{"argumentTypes":null,"id":8640,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8633,"src":"1973:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1956:25:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":8643,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8635,"src":"1984:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1956:33:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8645,"nodeType":"ExpressionStatement","src":"1956:33:27"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8647,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8631,"src":"2013:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8648,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8633,"src":"2020:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8649,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8635,"src":"2029:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8646,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8507,"src":"2004:8:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8650,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2004:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8651,"nodeType":"EmitStatement","src":"1999:36:27"}]},"documentation":null,"id":8653,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8636,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8631,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":8653,"src":"1870:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8630,"name":"address","nodeType":"ElementaryTypeName","src":"1870:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8633,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":8653,"src":"1893:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8632,"name":"address","nodeType":"ElementaryTypeName","src":"1893:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8635,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8653,"src":"1918:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8634,"name":"uint256","nodeType":"ElementaryTypeName","src":"1918:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1860:77:27"},"returnParameters":{"id":8637,"nodeType":"ParameterList","parameters":[],"src":"1946:0:27"},"scope":8878,"src":"1843:199:27","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8708,"nodeType":"Block","src":"2146:309:27","statements":[{"assignments":[8663],"declarations":[{"constant":false,"id":8663,"mutability":"mutable","name":"burnAmount","nodeType":"VariableDeclaration","overrides":null,"scope":8708,"src":"2156:18:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8662,"name":"uint256","nodeType":"ElementaryTypeName","src":"2156:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8667,"initialValue":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8664,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8659,"src":"2177:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"argumentTypes":null,"hexValue":"313030","id":8665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2185:3:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"2177:11:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2156:32:27"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8669,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"2204:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8670,"name":"burnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8663,"src":"2210:10:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8668,"name":"_burn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8629,"src":"2198:5:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2198:23:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8672,"nodeType":"ExpressionStatement","src":"2198:23:27"},{"assignments":[8674],"declarations":[{"constant":false,"id":8674,"mutability":"mutable","name":"transferAmount","nodeType":"VariableDeclaration","overrides":null,"scope":8708,"src":"2231:22:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8673,"name":"uint256","nodeType":"ElementaryTypeName","src":"2231:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8679,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8677,"name":"burnAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8663,"src":"2266:10:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":8675,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8659,"src":"2256:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"2256:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2256:21:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2231:46:27"},{"expression":{"argumentTypes":null,"id":8689,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8680,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8484,"src":"2287:9:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8682,"indexExpression":{"argumentTypes":null,"id":8681,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"2297:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2287:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8687,"name":"transferAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"2325:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8683,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8484,"src":"2305:9:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8685,"indexExpression":{"argumentTypes":null,"id":8684,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"2315:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2305:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"2305:19:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2305:35:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2287:53:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8690,"nodeType":"ExpressionStatement","src":"2287:53:27"},{"expression":{"argumentTypes":null,"id":8700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8691,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8484,"src":"2350:9:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8693,"indexExpression":{"argumentTypes":null,"id":8692,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8657,"src":"2360:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2350:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8698,"name":"transferAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"2384:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8694,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8484,"src":"2366:9:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8696,"indexExpression":{"argumentTypes":null,"id":8695,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8657,"src":"2376:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2366:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8252,"src":"2366:17:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2366:33:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2350:49:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8701,"nodeType":"ExpressionStatement","src":"2350:49:27"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8703,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8655,"src":"2423:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8704,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8657,"src":"2429:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8705,"name":"transferAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8674,"src":"2433:14:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8702,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8515,"src":"2414:8:27","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2414:34:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8707,"nodeType":"EmitStatement","src":"2409:39:27"}]},"documentation":null,"id":8709,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8655,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":8709,"src":"2076:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8654,"name":"address","nodeType":"ElementaryTypeName","src":"2076:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8657,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":8709,"src":"2098:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8656,"name":"address","nodeType":"ElementaryTypeName","src":"2098:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8659,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8709,"src":"2118:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8658,"name":"uint256","nodeType":"ElementaryTypeName","src":"2118:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2066:71:27"},"returnParameters":{"id":8661,"nodeType":"ParameterList","parameters":[],"src":"2146:0:27"},"scope":8878,"src":"2048:407:27","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":8727,"nodeType":"Block","src":"2534:74:27","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8719,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2553:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2553:10:27","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":8721,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8711,"src":"2565:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8722,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8713,"src":"2574:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8718,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8653,"src":"2544:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2544:36:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8724,"nodeType":"ExpressionStatement","src":"2544:36:27"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":8725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2597:4:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8717,"id":8726,"nodeType":"Return","src":"2590:11:27"}]},"documentation":null,"functionSelector":"095ea7b3","id":8728,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8714,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8711,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":8728,"src":"2478:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8710,"name":"address","nodeType":"ElementaryTypeName","src":"2478:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8713,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8728,"src":"2495:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8712,"name":"uint256","nodeType":"ElementaryTypeName","src":"2495:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2477:32:27"},"returnParameters":{"id":8717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8716,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":8728,"src":"2528:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8715,"name":"bool","nodeType":"ElementaryTypeName","src":"2528:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2527:6:27"},"scope":8878,"src":"2461:147:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8746,"nodeType":"Block","src":"2683:70:27","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8738,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2703:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2703:10:27","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":8740,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8730,"src":"2715:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8741,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8732,"src":"2719:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8737,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"2693:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2693:32:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8743,"nodeType":"ExpressionStatement","src":"2693:32:27"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":8744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2742:4:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8736,"id":8745,"nodeType":"Return","src":"2735:11:27"}]},"documentation":null,"functionSelector":"a9059cbb","id":8747,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8730,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":8747,"src":"2632:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8729,"name":"address","nodeType":"ElementaryTypeName","src":"2632:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8732,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8747,"src":"2644:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8731,"name":"uint256","nodeType":"ElementaryTypeName","src":"2644:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2631:27:27"},"returnParameters":{"id":8736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8735,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":8747,"src":"2677:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8734,"name":"bool","nodeType":"ElementaryTypeName","src":"2677:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2676:6:27"},"scope":8878,"src":"2614:139:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8797,"nodeType":"Block","src":"2876:244:27","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8758,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8490,"src":"2890:9:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8760,"indexExpression":{"argumentTypes":null,"id":8759,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8749,"src":"2900:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2890:15:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8763,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8761,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2906:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2906:10:27","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2890:27:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2929:2:27","subExpression":{"argumentTypes":null,"hexValue":"31","id":8766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2930:1:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":8765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2921:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":8764,"name":"uint256","nodeType":"ElementaryTypeName","src":"2921:7:27","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":8768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2921:11:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2890:42:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":8788,"nodeType":"IfStatement","src":"2886:171:27","trueBody":{"id":8787,"nodeType":"Block","src":"2934:123:27","statements":[{"expression":{"argumentTypes":null,"id":8785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8770,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8490,"src":"2948:9:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8774,"indexExpression":{"argumentTypes":null,"id":8771,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8749,"src":"2958:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2948:15:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8775,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8772,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2964:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2964:10:27","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2948:27:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8783,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8753,"src":"3027:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8776,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8490,"src":"2978:9:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":8778,"indexExpression":{"argumentTypes":null,"id":8777,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8749,"src":"2988:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2978:15:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8781,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8779,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2994:3:27","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2994:10:27","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2978:27:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"2978:31:27","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8784,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2978:68:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2948:98:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8786,"nodeType":"ExpressionStatement","src":"2948:98:27"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8790,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8749,"src":"3076:4:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8791,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8751,"src":"3082:2:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8792,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8753,"src":"3086:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8789,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8709,"src":"3066:9:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3066:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8794,"nodeType":"ExpressionStatement","src":"3066:26:27"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":8795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3109:4:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":8757,"id":8796,"nodeType":"Return","src":"3102:11:27"}]},"documentation":null,"functionSelector":"23b872dd","id":8798,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8749,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":8798,"src":"2790:12:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8748,"name":"address","nodeType":"ElementaryTypeName","src":"2790:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8751,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":8798,"src":"2812:10:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8750,"name":"address","nodeType":"ElementaryTypeName","src":"2812:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8753,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8798,"src":"2832:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8752,"name":"uint256","nodeType":"ElementaryTypeName","src":"2832:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2780:71:27"},"returnParameters":{"id":8757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8756,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":8798,"src":"2870:4:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8755,"name":"bool","nodeType":"ElementaryTypeName","src":"2870:4:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2869:6:27"},"scope":8878,"src":"2759:361:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":8876,"nodeType":"Block","src":"3309:763:27","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":8819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8816,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8806,"src":"3327:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8817,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3339:5:27","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":8818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3339:15:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3327:27:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"45585049524544","id":8820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3356:9:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a","typeString":"literal_string \"EXPIRED\""},"value":"EXPIRED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a","typeString":"literal_string \"EXPIRED\""}],"id":8815,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3319:7:27","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3319:47:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8822,"nodeType":"ExpressionStatement","src":"3319:47:27"},{"assignments":[8824],"declarations":[{"constant":false,"id":8824,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","overrides":null,"scope":8876,"src":"3376:14:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8823,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3376:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":8846,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"1901","id":8828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3450:10:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},"value":"\u0019\u0001"},{"argumentTypes":null,"id":8829,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8492,"src":"3478:16:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8833,"name":"PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8495,"src":"3579:15:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":8834,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8800,"src":"3620:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8835,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8802,"src":"3651:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8836,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"3684:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3715:15:27","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8837,"name":"nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8499,"src":"3715:6:27","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8839,"indexExpression":{"argumentTypes":null,"id":8838,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8800,"src":"3722:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3715:13:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":8841,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8806,"src":"3756:8:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":8831,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3543:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8832,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3543:10:27","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3543:243:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8830,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3512:9:27","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3512:292:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":8826,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3416:3:27","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3416:16:27","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3416:402:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8825,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3393:9:27","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3393:435:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3376:452:27"},{"assignments":[8848],"declarations":[{"constant":false,"id":8848,"mutability":"mutable","name":"recoveredAddress","nodeType":"VariableDeclaration","overrides":null,"scope":8876,"src":"3838:24:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8847,"name":"address","nodeType":"ElementaryTypeName","src":"3838:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":8855,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8850,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8824,"src":"3875:6:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":8851,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8808,"src":"3883:1:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":8852,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8810,"src":"3886:1:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":8853,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8812,"src":"3889:1:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":8849,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"3865:9:27","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":8854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3865:26:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3838:53:27"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":8866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8857,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8848,"src":"3922:16:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":8860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3950:1:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":8859,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3942:7:27","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8858,"name":"address","nodeType":"ElementaryTypeName","src":"3942:7:27","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":8861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3942:10:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3922:30:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":8865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":8863,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8848,"src":"3956:16:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":8864,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8800,"src":"3976:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3956:25:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3922:59:27","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"494e56414c49445f5349474e4154555245","id":8867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3995:19:27","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88","typeString":"literal_string \"INVALID_SIGNATURE\""},"value":"INVALID_SIGNATURE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88","typeString":"literal_string \"INVALID_SIGNATURE\""}],"id":8856,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3901:7:27","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":8868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3901:123:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8869,"nodeType":"ExpressionStatement","src":"3901:123:27"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8871,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8800,"src":"4043:5:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8872,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8802,"src":"4050:7:27","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":8873,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8804,"src":"4059:5:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8870,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8653,"src":"4034:8:27","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":8874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4034:31:27","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8875,"nodeType":"ExpressionStatement","src":"4034:31:27"}]},"documentation":null,"functionSelector":"d505accf","id":8877,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8813,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8800,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":8877,"src":"3151:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8799,"name":"address","nodeType":"ElementaryTypeName","src":"3151:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8802,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":8877,"src":"3174:15:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8801,"name":"address","nodeType":"ElementaryTypeName","src":"3174:7:27","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8804,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8877,"src":"3199:13:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8803,"name":"uint256","nodeType":"ElementaryTypeName","src":"3199:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8806,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":8877,"src":"3222:16:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8805,"name":"uint256","nodeType":"ElementaryTypeName","src":"3222:7:27","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":8808,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","overrides":null,"scope":8877,"src":"3248:7:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8807,"name":"uint8","nodeType":"ElementaryTypeName","src":"3248:5:27","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":8810,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":8877,"src":"3265:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8809,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3265:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":8812,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","overrides":null,"scope":8877,"src":"3284:9:27","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8811,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3284:7:27","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"3141:158:27"},"returnParameters":{"id":8814,"nodeType":"ParameterList","parameters":[],"src":"3309:0:27"},"scope":8878,"src":"3126:946:27","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":8879,"src":"62:4012:27"}],"src":"0:4075:27"},"id":27},"contracts/periphery/test/ERC20.sol":{"ast":{"absolutePath":"contracts/periphery/test/ERC20.sol","exportedSymbols":{"ERC20":[9275]},"id":9276,"nodeType":"SourceUnit","nodes":[{"id":8880,"literals":["solidity","=","0.6",".6"],"nodeType":"PragmaDirective","src":"0:23:28"},{"absolutePath":"contracts/periphery/libraries/SafeMath.sol","file":"../libraries/SafeMath.sol","id":8881,"nodeType":"ImportDirective","scope":9276,"sourceUnit":8304,"src":"25:35:28","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":9275,"linearizedBaseContracts":[9275],"name":"ERC20","nodeType":"ContractDefinition","nodes":[{"id":8884,"libraryName":{"contractScope":null,"id":8882,"name":"SafeMath","nodeType":"UserDefinedTypeName","referencedDeclaration":8303,"src":"89:8:28","typeDescriptions":{"typeIdentifier":"t_contract$_SafeMath_$8303","typeString":"library SafeMath"}},"nodeType":"UsingForDirective","src":"83:27:28","typeName":{"id":8883,"name":"uint256","nodeType":"ElementaryTypeName","src":"102:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":true,"functionSelector":"06fdde03","id":8887,"mutability":"constant","name":"name","nodeType":"VariableDeclaration","overrides":null,"scope":9275,"src":"116:42:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8885,"name":"string","nodeType":"ElementaryTypeName","src":"116:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"5465737420546f6b656e","id":8886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"146:12:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2","typeString":"literal_string \"Test Token\""},"value":"Test Token"},"visibility":"public"},{"constant":true,"functionSelector":"95d89b41","id":8890,"mutability":"constant","name":"symbol","nodeType":"VariableDeclaration","overrides":null,"scope":9275,"src":"164:36:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":8888,"name":"string","nodeType":"ElementaryTypeName","src":"164:6:28","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"argumentTypes":null,"hexValue":"5454","id":8889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"196:4:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_2ac50a34f0da9360cfd7e529a34ccdaa61aa98e2a0ac0928bf981af8e73352ba","typeString":"literal_string \"TT\""},"value":"TT"},"visibility":"public"},{"constant":true,"functionSelector":"313ce567","id":8893,"mutability":"constant","name":"decimals","nodeType":"VariableDeclaration","overrides":null,"scope":9275,"src":"206:35:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":8891,"name":"uint8","nodeType":"ElementaryTypeName","src":"206:5:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"argumentTypes":null,"hexValue":"3138","id":8892,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"239:2:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"visibility":"public"},{"constant":false,"functionSelector":"18160ddd","id":8895,"mutability":"mutable","name":"totalSupply","nodeType":"VariableDeclaration","overrides":null,"scope":9275,"src":"247:26:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8894,"name":"uint256","nodeType":"ElementaryTypeName","src":"247:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"70a08231","id":8899,"mutability":"mutable","name":"balanceOf","nodeType":"VariableDeclaration","overrides":null,"scope":9275,"src":"279:44:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8898,"keyType":{"id":8896,"name":"address","nodeType":"ElementaryTypeName","src":"287:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"279:27:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":8897,"name":"uint256","nodeType":"ElementaryTypeName","src":"298:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"dd62ed3e","id":8905,"mutability":"mutable","name":"allowance","nodeType":"VariableDeclaration","overrides":null,"scope":9275,"src":"329:64:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":8904,"keyType":{"id":8900,"name":"address","nodeType":"ElementaryTypeName","src":"337:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"329:47:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":8903,"keyType":{"id":8901,"name":"address","nodeType":"ElementaryTypeName","src":"356:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"348:27:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":8902,"name":"uint256","nodeType":"ElementaryTypeName","src":"367:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"value":null,"visibility":"public"},{"constant":false,"functionSelector":"3644e515","id":8907,"mutability":"mutable","name":"DOMAIN_SEPARATOR","nodeType":"VariableDeclaration","overrides":null,"scope":9275,"src":"400:31:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8906,"name":"bytes32","nodeType":"ElementaryTypeName","src":"400:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"public"},{"constant":true,"functionSelector":"30adf81f","id":8910,"mutability":"constant","name":"PERMIT_TYPEHASH","nodeType":"VariableDeclaration","overrides":null,"scope":9275,"src":"541:116:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":8908,"name":"bytes32","nodeType":"ElementaryTypeName","src":"541:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"argumentTypes":null,"hexValue":"307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339","id":8909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"591:66:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1","typeString":"int_const 4995...(69 digits omitted)...3241"},"value":"0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"},"visibility":"public"},{"constant":false,"functionSelector":"7ecebe00","id":8914,"mutability":"mutable","name":"nonces","nodeType":"VariableDeclaration","overrides":null,"scope":9275,"src":"663:41:28","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":8913,"keyType":{"id":8911,"name":"address","nodeType":"ElementaryTypeName","src":"671:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"663:27:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":8912,"name":"uint256","nodeType":"ElementaryTypeName","src":"682:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"value":null,"visibility":"public"},{"anonymous":false,"documentation":null,"id":8922,"name":"Approval","nodeType":"EventDefinition","parameters":{"id":8921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8916,"indexed":true,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":8922,"src":"735:21:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8915,"name":"address","nodeType":"ElementaryTypeName","src":"735:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8918,"indexed":true,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":8922,"src":"766:23:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8917,"name":"address","nodeType":"ElementaryTypeName","src":"766:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8920,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8922,"src":"799:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8919,"name":"uint256","nodeType":"ElementaryTypeName","src":"799:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"725:93:28"},"src":"711:108:28"},{"anonymous":false,"documentation":null,"id":8930,"name":"Transfer","nodeType":"EventDefinition","parameters":{"id":8929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8924,"indexed":true,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":8930,"src":"839:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8923,"name":"address","nodeType":"ElementaryTypeName","src":"839:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8926,"indexed":true,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":8930,"src":"861:18:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8925,"name":"address","nodeType":"ElementaryTypeName","src":"861:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8928,"indexed":false,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":8930,"src":"881:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8927,"name":"uint256","nodeType":"ElementaryTypeName","src":"881:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"838:57:28"},"src":"824:72:28"},{"body":{"id":8973,"nodeType":"Block","src":"943:454:28","statements":[{"assignments":[8936],"declarations":[{"constant":false,"id":8936,"mutability":"mutable","name":"chainId","nodeType":"VariableDeclaration","overrides":null,"scope":8973,"src":"953:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8935,"name":"uint256","nodeType":"ElementaryTypeName","src":"953:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"id":8938,"initialValue":{"argumentTypes":null,"hexValue":"307834313465","id":8937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"971:6:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_16718_by_1","typeString":"int_const 16718"},"value":"0x414e"},"nodeType":"VariableDeclarationStatement","src":"953:24:28"},{"expression":{"argumentTypes":null,"id":8965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8939,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8907,"src":"987:16:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":8944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1088:84:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":8943,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1057:9:28","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1057:133:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8949,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8887,"src":"1224:4:28","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":8948,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1218:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":8947,"name":"bytes","nodeType":"ElementaryTypeName","src":"1218:5:28","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":8950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1218:11:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8946,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1208:9:28","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1208:22:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"31","id":8955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1264:3:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""}],"id":8954,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1258:5:28","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":8953,"name":"bytes","nodeType":"ElementaryTypeName","src":"1258:5:28","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":8956,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1258:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8952,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1248:9:28","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1248:21:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":8958,"name":"chainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8936,"src":"1287:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8961,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"1320:4:28","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$9275","typeString":"contract ERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$9275","typeString":"contract ERC20"}],"id":8960,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1312:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":8959,"name":"address","nodeType":"ElementaryTypeName","src":"1312:7:28","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":8962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1312:13:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"argumentTypes":null,"id":8941,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1029:3:28","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":8942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1029:10:28","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":8963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1029:310:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":8940,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1006:9:28","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":8964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1006:343:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"987:362:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":8966,"nodeType":"ExpressionStatement","src":"987:362:28"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":8968,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1365:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":8969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1365:10:28","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":8970,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8932,"src":"1377:12:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8967,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9009,"src":"1359:5:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":8971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1359:31:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":8972,"nodeType":"ExpressionStatement","src":"1359:31:28"}]},"documentation":null,"id":8974,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8932,"mutability":"mutable","name":"_totalSupply","nodeType":"VariableDeclaration","overrides":null,"scope":8974,"src":"914:20:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8931,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"913:22:28"},"returnParameters":{"id":8934,"nodeType":"ParameterList","parameters":[],"src":"943:0:28"},"scope":9275,"src":"902:495:28","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":9008,"nodeType":"Block","src":"1454:149:28","statements":[{"expression":{"argumentTypes":null,"id":8986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":8981,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8895,"src":"1464:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8984,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8978,"src":"1494:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":8982,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8895,"src":"1478:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8252,"src":"1478:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8985,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1478:22:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1464:36:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8987,"nodeType":"ExpressionStatement","src":"1464:36:28"},{"expression":{"argumentTypes":null,"id":8997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8988,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8899,"src":"1510:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8990,"indexExpression":{"argumentTypes":null,"id":8989,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8976,"src":"1520:2:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1510:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":8995,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8978,"src":"1544:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":8991,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8899,"src":"1526:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":8993,"indexExpression":{"argumentTypes":null,"id":8992,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8976,"src":"1536:2:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1526:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8994,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8252,"src":"1526:17:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":8996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1526:24:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1510:40:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":8998,"nodeType":"ExpressionStatement","src":"1510:40:28"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":9002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1582:1:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1574:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9000,"name":"address","nodeType":"ElementaryTypeName","src":"1574:7:28","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":9003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1574:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":9004,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8976,"src":"1586:2:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9005,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8978,"src":"1590:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":8999,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8930,"src":"1565:8:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1565:31:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9007,"nodeType":"EmitStatement","src":"1560:36:28"}]},"documentation":null,"id":9009,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":8979,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8976,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":9009,"src":"1418:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":8975,"name":"address","nodeType":"ElementaryTypeName","src":"1418:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":8978,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":9009,"src":"1430:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":8977,"name":"uint256","nodeType":"ElementaryTypeName","src":"1430:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1417:27:28"},"returnParameters":{"id":8980,"nodeType":"ParameterList","parameters":[],"src":"1454:0:28"},"scope":9275,"src":"1403:200:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9043,"nodeType":"Block","src":"1662:155:28","statements":[{"expression":{"argumentTypes":null,"id":9025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9016,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8899,"src":"1672:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9018,"indexExpression":{"argumentTypes":null,"id":9017,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9011,"src":"1682:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1672:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9023,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9013,"src":"1710:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9019,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8899,"src":"1690:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9021,"indexExpression":{"argumentTypes":null,"id":9020,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9011,"src":"1700:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1690:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"1690:19:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1690:26:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1672:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9026,"nodeType":"ExpressionStatement","src":"1672:44:28"},{"expression":{"argumentTypes":null,"id":9032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"id":9027,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8895,"src":"1726:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9030,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9013,"src":"1756:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":9028,"name":"totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8895,"src":"1740:11:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"1740:15:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1740:22:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1726:36:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9033,"nodeType":"ExpressionStatement","src":"1726:36:28"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9035,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9011,"src":"1786:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":9038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1800:1:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1792:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9036,"name":"address","nodeType":"ElementaryTypeName","src":"1792:7:28","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":9039,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1792:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":9040,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9013,"src":"1804:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9034,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8930,"src":"1777:8:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1777:33:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9042,"nodeType":"EmitStatement","src":"1772:38:28"}]},"documentation":null,"id":9044,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9011,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":9044,"src":"1624:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9010,"name":"address","nodeType":"ElementaryTypeName","src":"1624:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9013,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":9044,"src":"1638:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9012,"name":"uint256","nodeType":"ElementaryTypeName","src":"1638:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1623:29:28"},"returnParameters":{"id":9015,"nodeType":"ParameterList","parameters":[],"src":"1662:0:28"},"scope":9275,"src":"1609:208:28","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":9067,"nodeType":"Block","src":"1926:96:28","statements":[{"expression":{"argumentTypes":null,"id":9059,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9053,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8905,"src":"1936:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":9056,"indexExpression":{"argumentTypes":null,"id":9054,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9046,"src":"1946:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1936:16:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9057,"indexExpression":{"argumentTypes":null,"id":9055,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9048,"src":"1953:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1936:25:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"id":9058,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9050,"src":"1964:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1936:33:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9060,"nodeType":"ExpressionStatement","src":"1936:33:28"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9062,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9046,"src":"1993:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9063,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9048,"src":"2000:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9064,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9050,"src":"2009:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9061,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8922,"src":"1984:8:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9065,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1984:31:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9066,"nodeType":"EmitStatement","src":"1979:36:28"}]},"documentation":null,"id":9068,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9046,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":9068,"src":"1850:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9045,"name":"address","nodeType":"ElementaryTypeName","src":"1850:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9048,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":9068,"src":"1873:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9047,"name":"address","nodeType":"ElementaryTypeName","src":"1873:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9050,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":9068,"src":"1898:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9049,"name":"uint256","nodeType":"ElementaryTypeName","src":"1898:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1840:77:28"},"returnParameters":{"id":9052,"nodeType":"ParameterList","parameters":[],"src":"1926:0:28"},"scope":9275,"src":"1823:199:28","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":9105,"nodeType":"Block","src":"2126:151:28","statements":[{"expression":{"argumentTypes":null,"id":9086,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9077,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8899,"src":"2136:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9079,"indexExpression":{"argumentTypes":null,"id":9078,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9070,"src":"2146:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2136:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9084,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9074,"src":"2174:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9080,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8899,"src":"2154:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9082,"indexExpression":{"argumentTypes":null,"id":9081,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9070,"src":"2164:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2154:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"2154:19:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9085,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2154:26:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2136:44:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9087,"nodeType":"ExpressionStatement","src":"2136:44:28"},{"expression":{"argumentTypes":null,"id":9097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9088,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8899,"src":"2190:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9090,"indexExpression":{"argumentTypes":null,"id":9089,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9072,"src":"2200:2:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2190:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9095,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9074,"src":"2224:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9091,"name":"balanceOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8899,"src":"2206:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9093,"indexExpression":{"argumentTypes":null,"id":9092,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9072,"src":"2216:2:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2206:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"add","nodeType":"MemberAccess","referencedDeclaration":8252,"src":"2206:17:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9096,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2206:24:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2190:40:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9098,"nodeType":"ExpressionStatement","src":"2190:40:28"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9100,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9070,"src":"2254:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9101,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9072,"src":"2260:2:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9102,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9074,"src":"2264:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9099,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8930,"src":"2245:8:28","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2245:25:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9104,"nodeType":"EmitStatement","src":"2240:30:28"}]},"documentation":null,"id":9106,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9070,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":9106,"src":"2056:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9069,"name":"address","nodeType":"ElementaryTypeName","src":"2056:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9072,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":9106,"src":"2078:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9071,"name":"address","nodeType":"ElementaryTypeName","src":"2078:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9074,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":9106,"src":"2098:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9073,"name":"uint256","nodeType":"ElementaryTypeName","src":"2098:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2046:71:28"},"returnParameters":{"id":9076,"nodeType":"ParameterList","parameters":[],"src":"2126:0:28"},"scope":9275,"src":"2028:249:28","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":9124,"nodeType":"Block","src":"2356:74:28","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9116,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2375:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2375:10:28","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":9118,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9108,"src":"2387:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9119,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9110,"src":"2396:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9115,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9068,"src":"2366:8:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2366:36:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9121,"nodeType":"ExpressionStatement","src":"2366:36:28"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":9122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2419:4:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9114,"id":9123,"nodeType":"Return","src":"2412:11:28"}]},"documentation":null,"functionSelector":"095ea7b3","id":9125,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9108,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":9125,"src":"2300:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9107,"name":"address","nodeType":"ElementaryTypeName","src":"2300:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9110,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":9125,"src":"2317:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9109,"name":"uint256","nodeType":"ElementaryTypeName","src":"2317:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2299:32:28"},"returnParameters":{"id":9114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9113,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":9125,"src":"2350:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9112,"name":"bool","nodeType":"ElementaryTypeName","src":"2350:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2349:6:28"},"scope":9275,"src":"2283:147:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9143,"nodeType":"Block","src":"2505:70:28","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9135,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2525:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2525:10:28","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},{"argumentTypes":null,"id":9137,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9127,"src":"2537:2:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9138,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9129,"src":"2541:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9134,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9106,"src":"2515:9:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2515:32:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9140,"nodeType":"ExpressionStatement","src":"2515:32:28"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":9141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2564:4:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9133,"id":9142,"nodeType":"Return","src":"2557:11:28"}]},"documentation":null,"functionSelector":"a9059cbb","id":9144,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9127,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":9144,"src":"2454:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9126,"name":"address","nodeType":"ElementaryTypeName","src":"2454:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9129,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":9144,"src":"2466:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9128,"name":"uint256","nodeType":"ElementaryTypeName","src":"2466:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2453:27:28"},"returnParameters":{"id":9133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9132,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":9144,"src":"2499:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9131,"name":"bool","nodeType":"ElementaryTypeName","src":"2499:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2498:6:28"},"scope":9275,"src":"2436:139:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9194,"nodeType":"Block","src":"2698:244:28","statements":[{"condition":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9155,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8905,"src":"2712:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":9157,"indexExpression":{"argumentTypes":null,"id":9156,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9146,"src":"2722:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2712:15:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9160,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9158,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2728:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2728:10:28","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2712:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"2751:2:28","subExpression":{"argumentTypes":null,"hexValue":"31","id":9163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2752:1:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"id":9162,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2743:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9161,"name":"uint256","nodeType":"ElementaryTypeName","src":"2743:7:28","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":9165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2743:11:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2712:42:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":null,"id":9185,"nodeType":"IfStatement","src":"2708:171:28","trueBody":{"id":9184,"nodeType":"Block","src":"2756:123:28","statements":[{"expression":{"argumentTypes":null,"id":9182,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9167,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8905,"src":"2770:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":9171,"indexExpression":{"argumentTypes":null,"id":9168,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9146,"src":"2780:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2770:15:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9172,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9169,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2786:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2786:10:28","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2770:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"2849:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9173,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8905,"src":"2800:9:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":9175,"indexExpression":{"argumentTypes":null,"id":9174,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9146,"src":"2810:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2800:15:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9178,"indexExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9176,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2816:3:28","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":9177,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2816:10:28","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2800:27:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sub","nodeType":"MemberAccess","referencedDeclaration":8274,"src":"2800:31:28","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":9181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2800:68:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2770:98:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9183,"nodeType":"ExpressionStatement","src":"2770:98:28"}]}},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9187,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9146,"src":"2898:4:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9188,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9148,"src":"2904:2:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9189,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9150,"src":"2908:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9186,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9106,"src":"2888:9:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2888:26:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9191,"nodeType":"ExpressionStatement","src":"2888:26:28"},{"expression":{"argumentTypes":null,"hexValue":"74727565","id":9192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2931:4:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":9154,"id":9193,"nodeType":"Return","src":"2924:11:28"}]},"documentation":null,"functionSelector":"23b872dd","id":9195,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9146,"mutability":"mutable","name":"from","nodeType":"VariableDeclaration","overrides":null,"scope":9195,"src":"2612:12:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9145,"name":"address","nodeType":"ElementaryTypeName","src":"2612:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9148,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":9195,"src":"2634:10:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9147,"name":"address","nodeType":"ElementaryTypeName","src":"2634:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9150,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":9195,"src":"2654:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9149,"name":"uint256","nodeType":"ElementaryTypeName","src":"2654:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2602:71:28"},"returnParameters":{"id":9154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9153,"mutability":"mutable","name":"","nodeType":"VariableDeclaration","overrides":null,"scope":9195,"src":"2692:4:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9152,"name":"bool","nodeType":"ElementaryTypeName","src":"2692:4:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"}],"src":"2691:6:28"},"scope":9275,"src":"2581:361:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9273,"nodeType":"Block","src":"3131:763:28","statements":[{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":9216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9213,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9203,"src":"3149:8:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"argumentTypes":null,"expression":{"argumentTypes":null,"id":9214,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3161:5:28","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":9215,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3161:15:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3149:27:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"45585049524544","id":9217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3178:9:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a","typeString":"literal_string \"EXPIRED\""},"value":"EXPIRED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a","typeString":"literal_string \"EXPIRED\""}],"id":9212,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3141:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3141:47:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9219,"nodeType":"ExpressionStatement","src":"3141:47:28"},{"assignments":[9221],"declarations":[{"constant":false,"id":9221,"mutability":"mutable","name":"digest","nodeType":"VariableDeclaration","overrides":null,"scope":9273,"src":"3198:14:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9220,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3198:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"id":9243,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"1901","id":9225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3272:10:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},"value":"\u0019\u0001"},{"argumentTypes":null,"id":9226,"name":"DOMAIN_SEPARATOR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8907,"src":"3300:16:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9230,"name":"PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8910,"src":"3401:15:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":9231,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9197,"src":"3442:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9232,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9199,"src":"3473:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9233,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9201,"src":"3506:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3537:15:28","subExpression":{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9234,"name":"nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":8914,"src":"3537:6:28","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":9236,"indexExpression":{"argumentTypes":null,"id":9235,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9197,"src":"3544:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3537:13:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9238,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9203,"src":"3578:8:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":9228,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3365:3:28","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3365:10:28","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":9239,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3365:243:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9227,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3334:9:28","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":9240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3334:292:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541","typeString":"literal_string \"\u0019\u0001\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"argumentTypes":null,"id":9223,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3238:3:28","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9224,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3238:16:28","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":9241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3238:402:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":9222,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3215:9:28","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":9242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3215:435:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"3198:452:28"},{"assignments":[9245],"declarations":[{"constant":false,"id":9245,"mutability":"mutable","name":"recoveredAddress","nodeType":"VariableDeclaration","overrides":null,"scope":9273,"src":"3660:24:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9244,"name":"address","nodeType":"ElementaryTypeName","src":"3660:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"}],"id":9252,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9247,"name":"digest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9221,"src":"3697:6:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":9248,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9205,"src":"3705:1:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"argumentTypes":null,"id":9249,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9207,"src":"3708:1:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"argumentTypes":null,"id":9250,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9209,"src":"3711:1:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":9246,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"3687:9:28","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":9251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3687:26:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3660:53:28"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":9263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9254,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9245,"src":"3744:16:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"hexValue":"30","id":9257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3772:1:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":9256,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3764:7:28","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":9255,"name":"address","nodeType":"ElementaryTypeName","src":"3764:7:28","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":9258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3764:10:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"src":"3744:30:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":9262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"argumentTypes":null,"id":9260,"name":"recoveredAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9245,"src":"3778:16:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"argumentTypes":null,"id":9261,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9197,"src":"3798:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3778:25:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3744:59:28","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"argumentTypes":null,"hexValue":"494e56414c49445f5349474e4154555245","id":9264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3817:19:28","subdenomination":null,"typeDescriptions":{"typeIdentifier":"t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88","typeString":"literal_string \"INVALID_SIGNATURE\""},"value":"INVALID_SIGNATURE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88","typeString":"literal_string \"INVALID_SIGNATURE\""}],"id":9253,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3723:7:28","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":9265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3723:123:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9266,"nodeType":"ExpressionStatement","src":"3723:123:28"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9268,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9197,"src":"3865:5:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9269,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9199,"src":"3872:7:28","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9270,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9201,"src":"3881:5:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":9267,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9068,"src":"3856:8:28","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":9271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3856:31:28","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9272,"nodeType":"ExpressionStatement","src":"3856:31:28"}]},"documentation":null,"functionSelector":"d505accf","id":9274,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9197,"mutability":"mutable","name":"owner","nodeType":"VariableDeclaration","overrides":null,"scope":9274,"src":"2973:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9196,"name":"address","nodeType":"ElementaryTypeName","src":"2973:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9199,"mutability":"mutable","name":"spender","nodeType":"VariableDeclaration","overrides":null,"scope":9274,"src":"2996:15:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9198,"name":"address","nodeType":"ElementaryTypeName","src":"2996:7:28","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9201,"mutability":"mutable","name":"value","nodeType":"VariableDeclaration","overrides":null,"scope":9274,"src":"3021:13:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9200,"name":"uint256","nodeType":"ElementaryTypeName","src":"3021:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9203,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":9274,"src":"3044:16:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9202,"name":"uint256","nodeType":"ElementaryTypeName","src":"3044:7:28","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9205,"mutability":"mutable","name":"v","nodeType":"VariableDeclaration","overrides":null,"scope":9274,"src":"3070:7:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":9204,"name":"uint8","nodeType":"ElementaryTypeName","src":"3070:5:28","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":null,"visibility":"internal"},{"constant":false,"id":9207,"mutability":"mutable","name":"r","nodeType":"VariableDeclaration","overrides":null,"scope":9274,"src":"3087:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9206,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3087:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"},{"constant":false,"id":9209,"mutability":"mutable","name":"s","nodeType":"VariableDeclaration","overrides":null,"scope":9274,"src":"3106:9:28","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":9208,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3106:7:28","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":null,"visibility":"internal"}],"src":"2963:158:28"},"returnParameters":{"id":9211,"nodeType":"ParameterList","parameters":[],"src":"3131:0:28"},"scope":9275,"src":"2948:946:28","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":9276,"src":"62:3834:28"}],"src":"0:3897:28"},"id":28},"contracts/periphery/test/RouterEventEmitter.sol":{"ast":{"absolutePath":"contracts/periphery/test/RouterEventEmitter.sol","exportedSymbols":{"RouterEventEmitter":[9600]},"id":9601,"nodeType":"SourceUnit","nodes":[{"id":9277,"literals":["solidity","=","0.6",".6"],"nodeType":"PragmaDirective","src":"0:23:29"},{"absolutePath":"contracts/periphery/interfaces/IAstraRouter01.sol","file":"../interfaces/IAstraRouter01.sol","id":9278,"nodeType":"ImportDirective","scope":9601,"sourceUnit":5595,"src":"25:42:29","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","documentation":null,"fullyImplemented":true,"id":9600,"linearizedBaseContracts":[9600],"name":"RouterEventEmitter","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":null,"id":9283,"name":"Amounts","nodeType":"EventDefinition","parameters":{"id":9282,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9281,"indexed":false,"mutability":"mutable","name":"amounts","nodeType":"VariableDeclaration","overrides":null,"scope":9283,"src":"117:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":9279,"name":"uint","nodeType":"ElementaryTypeName","src":"117:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":9280,"length":null,"nodeType":"ArrayTypeName","src":"117:6:29","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"value":null,"visibility":"internal"}],"src":"116:16:29"},"src":"103:30:29"},{"body":{"id":9286,"nodeType":"Block","src":"166:2:29","statements":[]},"documentation":null,"id":9287,"implemented":true,"kind":"receive","modifiers":[],"name":"","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9284,"nodeType":"ParameterList","parameters":[],"src":"146:2:29"},"returnParameters":{"id":9285,"nodeType":"ParameterList","parameters":[],"src":"166:0:29"},"scope":9600,"src":"139:29:29","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":9339,"nodeType":"Block","src":"373:307:29","statements":[{"assignments":[9304,9306],"declarations":[{"constant":false,"id":9304,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":9339,"src":"384:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9303,"name":"bool","nodeType":"ElementaryTypeName","src":"384:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":9306,"mutability":"mutable","name":"returnData","nodeType":"VariableDeclaration","overrides":null,"scope":9339,"src":"398:23:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9305,"name":"bytes","nodeType":"ElementaryTypeName","src":"398:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":9323,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9312,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9289,"src":"496:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9311,"name":"IAstraRouter01","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5594,"src":"481:14:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraRouter01_$5594_$","typeString":"type(contract IAstraRouter01)"}},"id":9313,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"481:22:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":9314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swapExactTokensForTokens","nodeType":"MemberAccess","referencedDeclaration":5457,"src":"481:47:29","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"}},"id":9315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"481:56:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":9316,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9291,"src":"539:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9317,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9293,"src":"549:12:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9318,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9296,"src":"563:4:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":9319,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9298,"src":"569:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9320,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9300,"src":"573:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":9309,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"445:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9310,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"445:22:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":9321,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"445:146:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":9307,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9289,"src":"425:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"425:19:29","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":9322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"425:167:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"383:209:29"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9325,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9304,"src":"609:7:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9324,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"602:6:29","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"602:15:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9327,"nodeType":"ExpressionStatement","src":"602:15:29"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9331,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9306,"src":"651:10:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"664:4:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9332,"name":"uint","nodeType":"ElementaryTypeName","src":"664:4:29","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":9334,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"664:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":9335,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"663:8:29","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}],"expression":{"argumentTypes":null,"id":9329,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"640:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9330,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"640:10:29","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":9336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"640:32:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":9328,"name":"Amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9283,"src":"632:7:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256[] memory)"}},"id":9337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"632:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9338,"nodeType":"EmitStatement","src":"627:46:29"}]},"documentation":null,"functionSelector":"375734d9","id":9340,"implemented":true,"kind":"function","modifiers":[],"name":"swapExactTokensForTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9289,"mutability":"mutable","name":"router","nodeType":"VariableDeclaration","overrides":null,"scope":9340,"src":"217:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9288,"name":"address","nodeType":"ElementaryTypeName","src":"217:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9291,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":9340,"src":"241:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9290,"name":"uint","nodeType":"ElementaryTypeName","src":"241:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9293,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":9340,"src":"264:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9292,"name":"uint","nodeType":"ElementaryTypeName","src":"264:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9296,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":9340,"src":"291:23:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9294,"name":"address","nodeType":"ElementaryTypeName","src":"291:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9295,"length":null,"nodeType":"ArrayTypeName","src":"291:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":9298,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":9340,"src":"324:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9297,"name":"address","nodeType":"ElementaryTypeName","src":"324:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9300,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":9340,"src":"344:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9299,"name":"uint","nodeType":"ElementaryTypeName","src":"344:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"207:156:29"},"returnParameters":{"id":9302,"nodeType":"ParameterList","parameters":[],"src":"373:0:29"},"scope":9600,"src":"174:506:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9392,"nodeType":"Block","src":"885:307:29","statements":[{"assignments":[9357,9359],"declarations":[{"constant":false,"id":9357,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":9392,"src":"896:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9356,"name":"bool","nodeType":"ElementaryTypeName","src":"896:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":9359,"mutability":"mutable","name":"returnData","nodeType":"VariableDeclaration","overrides":null,"scope":9392,"src":"910:23:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9358,"name":"bytes","nodeType":"ElementaryTypeName","src":"910:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":9376,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9365,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9342,"src":"1008:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9364,"name":"IAstraRouter01","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5594,"src":"993:14:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraRouter01_$5594_$","typeString":"type(contract IAstraRouter01)"}},"id":9366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"993:22:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":9367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swapTokensForExactTokens","nodeType":"MemberAccess","referencedDeclaration":5474,"src":"993:47:29","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"}},"id":9368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"993:56:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":9369,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9344,"src":"1051:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9370,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9346,"src":"1062:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9371,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9349,"src":"1075:4:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":9372,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9351,"src":"1081:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9373,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9353,"src":"1085:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":9362,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"957:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"957:22:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":9374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"957:146:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":9360,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9342,"src":"937:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9361,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"937:19:29","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":9375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"937:167:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"895:209:29"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9378,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9357,"src":"1121:7:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9377,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1114:6:29","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1114:15:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9380,"nodeType":"ExpressionStatement","src":"1114:15:29"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9384,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9359,"src":"1163:10:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1176:4:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9385,"name":"uint","nodeType":"ElementaryTypeName","src":"1176:4:29","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":9387,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1176:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":9388,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1175:8:29","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}],"expression":{"argumentTypes":null,"id":9382,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1152:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1152:10:29","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":9389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1152:32:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":9381,"name":"Amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9283,"src":"1144:7:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256[] memory)"}},"id":9390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1144:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9391,"nodeType":"EmitStatement","src":"1139:46:29"}]},"documentation":null,"functionSelector":"22b58410","id":9393,"implemented":true,"kind":"function","modifiers":[],"name":"swapTokensForExactTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9342,"mutability":"mutable","name":"router","nodeType":"VariableDeclaration","overrides":null,"scope":9393,"src":"729:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9341,"name":"address","nodeType":"ElementaryTypeName","src":"729:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9344,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":9393,"src":"753:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9343,"name":"uint","nodeType":"ElementaryTypeName","src":"753:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9346,"mutability":"mutable","name":"amountInMax","nodeType":"VariableDeclaration","overrides":null,"scope":9393,"src":"777:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9345,"name":"uint","nodeType":"ElementaryTypeName","src":"777:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9349,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":9393,"src":"803:23:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9347,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9348,"length":null,"nodeType":"ArrayTypeName","src":"803:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":9351,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":9393,"src":"836:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9350,"name":"address","nodeType":"ElementaryTypeName","src":"836:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9353,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":9393,"src":"856:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9352,"name":"uint","nodeType":"ElementaryTypeName","src":"856:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"719:156:29"},"returnParameters":{"id":9355,"nodeType":"ParameterList","parameters":[],"src":"885:0:29"},"scope":9600,"src":"686:506:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9442,"nodeType":"Block","src":"1379:294:29","statements":[{"assignments":[9408,9410],"declarations":[{"constant":false,"id":9408,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":9442,"src":"1390:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9407,"name":"bool","nodeType":"ElementaryTypeName","src":"1390:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":9410,"mutability":"mutable","name":"returnData","nodeType":"VariableDeclaration","overrides":null,"scope":9442,"src":"1404:23:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9409,"name":"bytes","nodeType":"ElementaryTypeName","src":"1404:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":9426,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9416,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9395,"src":"1502:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9415,"name":"IAstraRouter01","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5594,"src":"1487:14:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraRouter01_$5594_$","typeString":"type(contract IAstraRouter01)"}},"id":9417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1487:22:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":9418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swapExactAMBForTokens","nodeType":"MemberAccess","referencedDeclaration":5489,"src":"1487:44:29","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256,address[] memory,address,uint256) payable external returns (uint256[] memory)"}},"id":9419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1487:53:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":9420,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9397,"src":"1542:12:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9421,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9400,"src":"1556:4:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":9422,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9402,"src":"1562:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9423,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9404,"src":"1566:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":9413,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1451:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1451:22:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":9424,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1451:133:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":9411,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9395,"src":"1431:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1431:19:29","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":9425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1431:154:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1389:196:29"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9428,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9408,"src":"1602:7:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9427,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"1595:6:29","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1595:15:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9430,"nodeType":"ExpressionStatement","src":"1595:15:29"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9434,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9410,"src":"1644:10:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1657:4:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9435,"name":"uint","nodeType":"ElementaryTypeName","src":"1657:4:29","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":9437,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"1657:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":9438,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"1656:8:29","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}],"expression":{"argumentTypes":null,"id":9432,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1633:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1633:10:29","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":9439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1633:32:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":9431,"name":"Amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9283,"src":"1625:7:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256[] memory)"}},"id":9440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1625:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9441,"nodeType":"EmitStatement","src":"1620:46:29"}]},"documentation":null,"functionSelector":"99b32712","id":9443,"implemented":true,"kind":"function","modifiers":[],"name":"swapExactAMBForTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9395,"mutability":"mutable","name":"router","nodeType":"VariableDeclaration","overrides":null,"scope":9443,"src":"1238:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9394,"name":"address","nodeType":"ElementaryTypeName","src":"1238:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9397,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":9443,"src":"1262:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9396,"name":"uint","nodeType":"ElementaryTypeName","src":"1262:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9400,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":9443,"src":"1289:23:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9398,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9399,"length":null,"nodeType":"ArrayTypeName","src":"1289:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":9402,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":9443,"src":"1322:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9401,"name":"address","nodeType":"ElementaryTypeName","src":"1322:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9404,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":9443,"src":"1342:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9403,"name":"uint","nodeType":"ElementaryTypeName","src":"1342:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1228:133:29"},"returnParameters":{"id":9406,"nodeType":"ParameterList","parameters":[],"src":"1379:0:29"},"scope":9600,"src":"1198:475:29","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":9495,"nodeType":"Block","src":"1875:304:29","statements":[{"assignments":[9460,9462],"declarations":[{"constant":false,"id":9460,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":9495,"src":"1886:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9459,"name":"bool","nodeType":"ElementaryTypeName","src":"1886:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":9462,"mutability":"mutable","name":"returnData","nodeType":"VariableDeclaration","overrides":null,"scope":9495,"src":"1900:23:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9461,"name":"bytes","nodeType":"ElementaryTypeName","src":"1900:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":9479,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9468,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9445,"src":"1998:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9467,"name":"IAstraRouter01","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5594,"src":"1983:14:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraRouter01_$5594_$","typeString":"type(contract IAstraRouter01)"}},"id":9469,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1983:22:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":9470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swapTokensForExactAMB","nodeType":"MemberAccess","referencedDeclaration":5506,"src":"1983:44:29","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"}},"id":9471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1983:53:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":9472,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9447,"src":"2038:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9473,"name":"amountInMax","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9449,"src":"2049:11:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9474,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9452,"src":"2062:4:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":9475,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9454,"src":"2068:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9476,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9456,"src":"2072:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":9465,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1947:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9466,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1947:22:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":9477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1947:143:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":9463,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9445,"src":"1927:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"1927:19:29","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":9478,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1927:164:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"1885:206:29"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9481,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9460,"src":"2108:7:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9480,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2101:6:29","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2101:15:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9483,"nodeType":"ExpressionStatement","src":"2101:15:29"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9487,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9462,"src":"2150:10:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2163:4:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9488,"name":"uint","nodeType":"ElementaryTypeName","src":"2163:4:29","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":9490,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"2163:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":9491,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2162:8:29","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}],"expression":{"argumentTypes":null,"id":9485,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2139:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2139:10:29","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":9492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2139:32:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":9484,"name":"Amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9283,"src":"2131:7:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256[] memory)"}},"id":9493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2131:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9494,"nodeType":"EmitStatement","src":"2126:46:29"}]},"documentation":null,"functionSelector":"75730639","id":9496,"implemented":true,"kind":"function","modifiers":[],"name":"swapTokensForExactAMB","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9445,"mutability":"mutable","name":"router","nodeType":"VariableDeclaration","overrides":null,"scope":9496,"src":"1719:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9444,"name":"address","nodeType":"ElementaryTypeName","src":"1719:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9447,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":9496,"src":"1743:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9446,"name":"uint","nodeType":"ElementaryTypeName","src":"1743:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9449,"mutability":"mutable","name":"amountInMax","nodeType":"VariableDeclaration","overrides":null,"scope":9496,"src":"1767:16:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9448,"name":"uint","nodeType":"ElementaryTypeName","src":"1767:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9452,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":9496,"src":"1793:23:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9450,"name":"address","nodeType":"ElementaryTypeName","src":"1793:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9451,"length":null,"nodeType":"ArrayTypeName","src":"1793:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":9454,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":9496,"src":"1826:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9453,"name":"address","nodeType":"ElementaryTypeName","src":"1826:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9456,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":9496,"src":"1846:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9455,"name":"uint","nodeType":"ElementaryTypeName","src":"1846:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"1709:156:29"},"returnParameters":{"id":9458,"nodeType":"ParameterList","parameters":[],"src":"1875:0:29"},"scope":9600,"src":"1679:500:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9548,"nodeType":"Block","src":"2381:304:29","statements":[{"assignments":[9513,9515],"declarations":[{"constant":false,"id":9513,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":9548,"src":"2392:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9512,"name":"bool","nodeType":"ElementaryTypeName","src":"2392:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":9515,"mutability":"mutable","name":"returnData","nodeType":"VariableDeclaration","overrides":null,"scope":9548,"src":"2406:23:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9514,"name":"bytes","nodeType":"ElementaryTypeName","src":"2406:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":9532,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9521,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9498,"src":"2504:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9520,"name":"IAstraRouter01","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5594,"src":"2489:14:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraRouter01_$5594_$","typeString":"type(contract IAstraRouter01)"}},"id":9522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2489:22:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":9523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swapExactTokensForAMB","nodeType":"MemberAccess","referencedDeclaration":5523,"src":"2489:44:29","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"}},"id":9524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2489:53:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":9525,"name":"amountIn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9500,"src":"2544:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9526,"name":"amountOutMin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9502,"src":"2554:12:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9527,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9505,"src":"2568:4:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":9528,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9507,"src":"2574:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9529,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9509,"src":"2578:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":9518,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2453:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2453:22:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":9530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2453:143:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":9516,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9498,"src":"2433:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2433:19:29","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":9531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2433:164:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2391:206:29"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9534,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9513,"src":"2614:7:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9533,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"2607:6:29","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2607:15:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9536,"nodeType":"ExpressionStatement","src":"2607:15:29"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9540,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9515,"src":"2656:10:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2669:4:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9541,"name":"uint","nodeType":"ElementaryTypeName","src":"2669:4:29","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":9543,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"2669:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":9544,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"2668:8:29","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}],"expression":{"argumentTypes":null,"id":9538,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2645:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9539,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2645:10:29","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":9545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2645:32:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":9537,"name":"Amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9283,"src":"2637:7:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256[] memory)"}},"id":9546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2637:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9547,"nodeType":"EmitStatement","src":"2632:46:29"}]},"documentation":null,"functionSelector":"5e5cb2f0","id":9549,"implemented":true,"kind":"function","modifiers":[],"name":"swapExactTokensForAMB","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9498,"mutability":"mutable","name":"router","nodeType":"VariableDeclaration","overrides":null,"scope":9549,"src":"2225:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9497,"name":"address","nodeType":"ElementaryTypeName","src":"2225:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9500,"mutability":"mutable","name":"amountIn","nodeType":"VariableDeclaration","overrides":null,"scope":9549,"src":"2249:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9499,"name":"uint","nodeType":"ElementaryTypeName","src":"2249:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9502,"mutability":"mutable","name":"amountOutMin","nodeType":"VariableDeclaration","overrides":null,"scope":9549,"src":"2272:17:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9501,"name":"uint","nodeType":"ElementaryTypeName","src":"2272:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9505,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":9549,"src":"2299:23:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9503,"name":"address","nodeType":"ElementaryTypeName","src":"2299:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9504,"length":null,"nodeType":"ArrayTypeName","src":"2299:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":9507,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":9549,"src":"2332:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9506,"name":"address","nodeType":"ElementaryTypeName","src":"2332:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9509,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":9549,"src":"2352:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9508,"name":"uint","nodeType":"ElementaryTypeName","src":"2352:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2215:156:29"},"returnParameters":{"id":9511,"nodeType":"ParameterList","parameters":[],"src":"2381:0:29"},"scope":9600,"src":"2185:500:29","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":9598,"nodeType":"Block","src":"2869:291:29","statements":[{"assignments":[9564,9566],"declarations":[{"constant":false,"id":9564,"mutability":"mutable","name":"success","nodeType":"VariableDeclaration","overrides":null,"scope":9598,"src":"2880:12:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":9563,"name":"bool","nodeType":"ElementaryTypeName","src":"2880:4:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"value":null,"visibility":"internal"},{"constant":false,"id":9566,"mutability":"mutable","name":"returnData","nodeType":"VariableDeclaration","overrides":null,"scope":9598,"src":"2894:23:29","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":9565,"name":"bytes","nodeType":"ElementaryTypeName","src":"2894:5:29","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"value":null,"visibility":"internal"}],"id":9582,"initialValue":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"expression":{"argumentTypes":null,"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9572,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9551,"src":"2992:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":9571,"name":"IAstraRouter01","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5594,"src":"2977:14:29","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IAstraRouter01_$5594_$","typeString":"type(contract IAstraRouter01)"}},"id":9573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2977:22:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IAstraRouter01_$5594","typeString":"contract IAstraRouter01"}},"id":9574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"swapAMBForExactTokens","nodeType":"MemberAccess","referencedDeclaration":5538,"src":"2977:44:29","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256,address[] memory,address,uint256) payable external returns (uint256[] memory)"}},"id":9575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2977:53:29","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"argumentTypes":null,"id":9576,"name":"amountOut","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9553,"src":"3032:9:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"argumentTypes":null,"id":9577,"name":"path","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9556,"src":"3043:4:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},{"argumentTypes":null,"id":9578,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9558,"src":"3049:2:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"argumentTypes":null,"id":9579,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9560,"src":"3053:8:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"argumentTypes":null,"id":9569,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2941:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2941:22:29","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":9580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2941:130:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":null,"id":9567,"name":"router","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9551,"src":"2921:6:29","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"delegatecall","nodeType":"MemberAccess","referencedDeclaration":null,"src":"2921:19:29","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":9581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2921:151:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2879:193:29"},{"expression":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9584,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9564,"src":"3089:7:29","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":9583,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"3082:6:29","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":9585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3082:15:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9586,"nodeType":"ExpressionStatement","src":"3082:15:29"},{"eventCall":{"argumentTypes":null,"arguments":[{"argumentTypes":null,"arguments":[{"argumentTypes":null,"id":9590,"name":"returnData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9566,"src":"3131:10:29","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"argumentTypes":null,"components":[{"argumentTypes":null,"baseExpression":{"argumentTypes":null,"id":9592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3144:4:29","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":9591,"name":"uint","nodeType":"ElementaryTypeName","src":"3144:4:29","typeDescriptions":{"typeIdentifier":null,"typeString":null}}},"id":9593,"indexExpression":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"IndexAccess","src":"3144:6:29","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"id":9594,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"3143:8:29","typeDescriptions":{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"type(uint256[] memory)"}],"expression":{"argumentTypes":null,"id":9588,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3120:3:29","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":9589,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"decode","nodeType":"MemberAccess","referencedDeclaration":null,"src":"3120:10:29","typeDescriptions":{"typeIdentifier":"t_function_abidecode_pure$__$returns$__$","typeString":"function () pure"}},"id":9595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3120:32:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"id":9587,"name":"Amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9283,"src":"3112:7:29","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256[] memory)"}},"id":9596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3112:41:29","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":9597,"nodeType":"EmitStatement","src":"3107:46:29"}]},"documentation":null,"functionSelector":"6c77b023","id":9599,"implemented":true,"kind":"function","modifiers":[],"name":"swapAMBForExactTokens","nodeType":"FunctionDefinition","overrides":null,"parameters":{"id":9561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":9551,"mutability":"mutable","name":"router","nodeType":"VariableDeclaration","overrides":null,"scope":9599,"src":"2731:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9550,"name":"address","nodeType":"ElementaryTypeName","src":"2731:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9553,"mutability":"mutable","name":"amountOut","nodeType":"VariableDeclaration","overrides":null,"scope":9599,"src":"2755:14:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9552,"name":"uint","nodeType":"ElementaryTypeName","src":"2755:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"},{"constant":false,"id":9556,"mutability":"mutable","name":"path","nodeType":"VariableDeclaration","overrides":null,"scope":9599,"src":"2779:23:29","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":9554,"name":"address","nodeType":"ElementaryTypeName","src":"2779:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":9555,"length":null,"nodeType":"ArrayTypeName","src":"2779:9:29","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"value":null,"visibility":"internal"},{"constant":false,"id":9558,"mutability":"mutable","name":"to","nodeType":"VariableDeclaration","overrides":null,"scope":9599,"src":"2812:10:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":9557,"name":"address","nodeType":"ElementaryTypeName","src":"2812:7:29","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"value":null,"visibility":"internal"},{"constant":false,"id":9560,"mutability":"mutable","name":"deadline","nodeType":"VariableDeclaration","overrides":null,"scope":9599,"src":"2832:13:29","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":9559,"name":"uint","nodeType":"ElementaryTypeName","src":"2832:4:29","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":null,"visibility":"internal"}],"src":"2721:130:29"},"returnParameters":{"id":9562,"nodeType":"ParameterList","parameters":[],"src":"2869:0:29"},"scope":9600,"src":"2691:469:29","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":9601,"src":"69:3093:29"}],"src":"0:3163:29"},"id":29}},"contracts":{"contracts/core/interfaces/IAstraCallee.sol":{"IAstraCallee":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCall","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"astraCall(address,uint256,uint256,bytes)":"ee906f6b"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/core/interfaces/IAstraCallee.sol\":\"IAstraCallee\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraCallee.sol\":{\"keccak256\":\"0xf5d820076bb4d5760e8e8370c9527a2b2f41e890abbfd3f33dd84081bc75eaf4\",\"urls\":[\"bzz-raw://802e26558411dccbe8f716957fa42d240edb1b7750fab48c844179c2a5e42ff0\",\"dweb:/ipfs/QmacHZo2nvJWxD9tbfmNTf3keLAMH9QB5TXrSwhEFQiGpG\"]}},\"version\":1}"}},"contracts/core/interfaces/IAstraFactory.sol":{"IAstraFactory":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token0","type":"address"},{"indexed":true,"internalType":"address","name":"token1","type":"address"},{"indexed":false,"internalType":"address","name":"pair","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"PairCreated","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allPairs","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allPairsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"createPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeToSetter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"getPair","outputs":[{"internalType":"address","name":"pair","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setFeeToSetter","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allPairs(uint256)":"1e3dd18b","allPairsLength()":"574f2ba3","createPair(address,address)":"c9c65396","feeTo()":"017e7e58","feeToSetter()":"094b7415","getPair(address,address)":"e6a43905","setFeeTo(address)":"f46901ed","setFeeToSetter(address)":"a2e74af6"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"createPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToSetter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeToSetter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/core/interfaces/IAstraFactory.sol\":\"IAstraFactory\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraFactory.sol\":{\"keccak256\":\"0x1d8cfacb873119cce028428fbfc6741a17f9dff23726b6f9262be38b04d2147d\",\"urls\":[\"bzz-raw://8161eaf5b9b22d8d7bb774f33dd0465b3796decc507f6509d02800052b6da351\",\"dweb:/ipfs/QmWhWSfZqWbx9iBRsV2PB2oEGcV7tgp8TthHH6ZYbN2JCP\"]}},\"version\":1}"}},"contracts/core/interfaces/IAstraPair.sol":{"IAstraPair":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"reserve0","type":"uint112"},{"internalType":"uint112","name":"reserve1","type":"uint112"},{"internalType":"uint32","name":"blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","MINIMUM_LIQUIDITY()":"ba9a7a56","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","burn(address)":"89afcb44","decimals()":"313ce567","factory()":"c45a0155","getReserves()":"0902f1ac","initialize(address,address)":"485cc955","kLast()":"7464fc3d","mint(address)":"6a627842","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","price0CumulativeLast()":"5909c0d5","price1CumulativeLast()":"5a3d5493","skim(address)":"bc25cf77","swap(uint256,uint256,address,bytes)":"022c0d9f","symbol()":"95d89b41","sync()":"fff6cae9","token0()":"0dfe1681","token1()":"d21220a7","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"blockTimestampLast\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0Out\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/core/interfaces/IAstraPair.sol\":\"IAstraPair\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]}},\"version\":1}"}},"contracts/periphery/AstraMigrator.sol":{"AstraMigrator":{"abi":[{"inputs":[{"internalType":"address","name":"_factoryV1","type":"address"},{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b506040516109443803806109448339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6108bd6100876000398061030752806103775280610409525080608352506108bd6000f3fe6080604052600436106100225760003560e01c8063b7df1d251461002e57610029565b3661002957005b600080fd5b34801561003a57600080fd5b5061007d600480360360a081101561005157600080fd5b506001600160a01b0381358116916020810135916040820135916060810135909116906080013561007f565b005b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306f2bf62876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156100f757600080fd5b505afa15801561010b573d6000803e3d6000fd5b505050506040513d602081101561012157600080fd5b5051604080516370a0823160e01b815233600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561016f57600080fd5b505afa158015610183573d6000803e3d6000fd5b505050506040513d602081101561019957600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810183905290519192506001600160a01b038416916323b872dd916064808201926020929091908290030181600087803b1580156101f457600080fd5b505af1158015610208573d6000803e3d6000fd5b505050506040513d602081101561021e57600080fd5b5051610268576040805162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b604482015290519081900360640190fd5b60408051637c45f8ad60e11b81526004810183905260016024820181905260448201526000196064820152815160009283926001600160a01b0387169263f88bf15a9260848084019391929182900301818787803b1580156102c957600080fd5b505af11580156102dd573d6000803e3d6000fd5b505050506040513d60408110156102f357600080fd5b508051602090910151909250905061032c897f000000000000000000000000000000000000000000000000000000000000000083610462565b6040805163425859d160e11b81526001600160a01b038b8116600483015260248201849052604482018b9052606482018a9052888116608483015260a48201889052915160009283927f0000000000000000000000000000000000000000000000000000000000000000909116916384b0b3a291879160c480830192606092919082900301818588803b1580156103c257600080fd5b505af11580156103d6573d6000803e3d6000fd5b50505050506040513d60608110156103ed57600080fd5b5080516020909101519092509050818311156104415761042f8b7f00000000000000000000000000000000000000000000000000000000000000006000610462565b61043c8b338486036105b6565b610455565b808411156104555761045533828603610703565b5050505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106104df5780518252601f1990920191602091820191016104c0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610541576040519150601f19603f3d011682016040523d82523d6000602084013e610546565b606091505b5091509150818015610574575080511580610574575080806020019051602081101561057157600080fd5b50515b6105af5760405162461bcd60e51b815260040180806020018281038252602b8152602001806107fc602b913960400191505060405180910390fd5b5050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106106335780518252601f199092019160209182019101610614565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610695576040519150601f19603f3d011682016040523d82523d6000602084013e61069a565b606091505b50915091508180156106c85750805115806106c857508080602001905160208110156106c557600080fd5b50515b6105af5760405162461bcd60e51b815260040180806020018281038252602d81526020018061085b602d913960400191505060405180910390fd5b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b6020831061074f5780518252601f199092019160209182019101610730565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146107b1576040519150601f19603f3d011682016040523d82523d6000602084013e6107b6565b606091505b50509050806107f65760405162461bcd60e51b81526004018080602001828103825260348152602001806108276034913960400191505060405180910390fd5b50505056fe5472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65645472616e7366657248656c7065723a3a736166655472616e73666572414d423a20414d42207472616e73666572206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564a26469706673582212205f8ac43277ae0712d80d1fbe92b1a377bc7ed20793dace81a5f1bbb39b6b591064736f6c63430006060033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x944 CODESIZE SUB DUP1 PUSH2 0x944 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x8BD PUSH2 0x87 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x307 MSTORE DUP1 PUSH2 0x377 MSTORE DUP1 PUSH2 0x409 MSTORE POP DUP1 PUSH1 0x83 MSTORE POP PUSH2 0x8BD PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x22 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB7DF1D25 EQ PUSH2 0x2E JUMPI PUSH2 0x29 JUMP JUMPDEST CALLDATASIZE PUSH2 0x29 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x7F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F2BF62 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x183 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x208 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x268 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1514905394D1915497D19493D357D19052531151 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x7C45F8AD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x64 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 PUSH4 0xF88BF15A SWAP3 PUSH1 0x84 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x32C DUP10 PUSH32 0x0 DUP4 PUSH2 0x462 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x425859D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP12 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD DUP11 SWAP1 MSTORE DUP9 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0xA4 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0x84B0B3A2 SWAP2 DUP8 SWAP2 PUSH1 0xC4 DUP1 DUP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 DUP4 GT ISZERO PUSH2 0x441 JUMPI PUSH2 0x42F DUP12 PUSH32 0x0 PUSH1 0x0 PUSH2 0x462 JUMP JUMPDEST PUSH2 0x43C DUP12 CALLER DUP5 DUP7 SUB PUSH2 0x5B6 JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST DUP1 DUP5 GT ISZERO PUSH2 0x455 JUMPI PUSH2 0x455 CALLER DUP3 DUP7 SUB PUSH2 0x703 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4DF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4C0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x541 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x546 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x574 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x574 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x5AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x7FC PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x633 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x614 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x695 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x69A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x6C8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x6C8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x5AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x85B PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x74F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x730 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7B1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7B6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x7F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x827 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP INVALID SLOAD PUSH19 0x616E7366657248656C7065723A3A7361666541 PUSH17 0x70726F76653A20617070726F7665206661 PUSH10 0x6C65645472616E736665 PUSH19 0x48656C7065723A3A736166655472616E736665 PUSH19 0x414D423A20414D42207472616E736665722066 PUSH2 0x696C PUSH6 0x645472616E73 PUSH7 0x657248656C7065 PUSH19 0x3A3A736166655472616E736665723A20747261 PUSH15 0x73666572206661696C6564A2646970 PUSH7 0x73582212205F8A 0xC4 ORIGIN PUSH24 0xAE0712D80D1FBE92B1A377BC7ED20793DACE81A5F1BBB39B PUSH12 0x591064736F6C634300060600 CALLER ","sourceMap":"279:1876:3:-:0;;;405:154;5:9:-1;2:2;;;27:1;24;17:12;2:2;405:154:3;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;405:154:3;;;;;;;-1:-1:-1;;;;;;471:39:3;;;;;;;;520:32;;;;;279:1876;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"330":[{"length":32,"start":131}],"332":[{"length":32,"start":775},{"length":32,"start":887},{"length":32,"start":1033}]},"linkReferences":{},"object":"6080604052600436106100225760003560e01c8063b7df1d251461002e57610029565b3661002957005b600080fd5b34801561003a57600080fd5b5061007d600480360360a081101561005157600080fd5b506001600160a01b0381358116916020810135916040820135916060810135909116906080013561007f565b005b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306f2bf62876040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156100f757600080fd5b505afa15801561010b573d6000803e3d6000fd5b505050506040513d602081101561012157600080fd5b5051604080516370a0823160e01b815233600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561016f57600080fd5b505afa158015610183573d6000803e3d6000fd5b505050506040513d602081101561019957600080fd5b5051604080516323b872dd60e01b81523360048201523060248201526044810183905290519192506001600160a01b038416916323b872dd916064808201926020929091908290030181600087803b1580156101f457600080fd5b505af1158015610208573d6000803e3d6000fd5b505050506040513d602081101561021e57600080fd5b5051610268576040805162461bcd60e51b81526020600482015260146024820152731514905394d1915497d19493d357d1905253115160621b604482015290519081900360640190fd5b60408051637c45f8ad60e11b81526004810183905260016024820181905260448201526000196064820152815160009283926001600160a01b0387169263f88bf15a9260848084019391929182900301818787803b1580156102c957600080fd5b505af11580156102dd573d6000803e3d6000fd5b505050506040513d60408110156102f357600080fd5b508051602090910151909250905061032c897f000000000000000000000000000000000000000000000000000000000000000083610462565b6040805163425859d160e11b81526001600160a01b038b8116600483015260248201849052604482018b9052606482018a9052888116608483015260a48201889052915160009283927f0000000000000000000000000000000000000000000000000000000000000000909116916384b0b3a291879160c480830192606092919082900301818588803b1580156103c257600080fd5b505af11580156103d6573d6000803e3d6000fd5b50505050506040513d60608110156103ed57600080fd5b5080516020909101519092509050818311156104415761042f8b7f00000000000000000000000000000000000000000000000000000000000000006000610462565b61043c8b338486036105b6565b610455565b808411156104555761045533828603610703565b5050505050505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106104df5780518252601f1990920191602091820191016104c0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610541576040519150601f19603f3d011682016040523d82523d6000602084013e610546565b606091505b5091509150818015610574575080511580610574575080806020019051602081101561057157600080fd5b50515b6105af5760405162461bcd60e51b815260040180806020018281038252602b8152602001806107fc602b913960400191505060405180910390fd5b5050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106106335780518252601f199092019160209182019101610614565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610695576040519150601f19603f3d011682016040523d82523d6000602084013e61069a565b606091505b50915091508180156106c85750805115806106c857508080602001905160208110156106c557600080fd5b50515b6105af5760405162461bcd60e51b815260040180806020018281038252602d81526020018061085b602d913960400191505060405180910390fd5b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b6020831061074f5780518252601f199092019160209182019101610730565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146107b1576040519150601f19603f3d011682016040523d82523d6000602084013e6107b6565b606091505b50509050806107f65760405162461bcd60e51b81526004018080602001828103825260348152602001806108276034913960400191505060405180910390fd5b50505056fe5472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65645472616e7366657248656c7065723a3a736166655472616e73666572414d423a20414d42207472616e73666572206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564a26469706673582212205f8ac43277ae0712d80d1fbe92b1a377bc7ed20793dace81a5f1bbb39b6b591064736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x22 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xB7DF1D25 EQ PUSH2 0x2E JUMPI PUSH2 0x29 JUMP JUMPDEST CALLDATASIZE PUSH2 0x29 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x7F JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F2BF62 DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x16F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x183 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x208 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x268 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x1514905394D1915497D19493D357D19052531151 PUSH1 0x62 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x7C45F8AD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x0 NOT PUSH1 0x64 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 PUSH4 0xF88BF15A SWAP3 PUSH1 0x84 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x32C DUP10 PUSH32 0x0 DUP4 PUSH2 0x462 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x425859D1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP5 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP12 SWAP1 MSTORE PUSH1 0x64 DUP3 ADD DUP11 SWAP1 MSTORE DUP9 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE PUSH1 0xA4 DUP3 ADD DUP9 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP2 AND SWAP2 PUSH4 0x84B0B3A2 SWAP2 DUP8 SWAP2 PUSH1 0xC4 DUP1 DUP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP DUP2 DUP4 GT ISZERO PUSH2 0x441 JUMPI PUSH2 0x42F DUP12 PUSH32 0x0 PUSH1 0x0 PUSH2 0x462 JUMP JUMPDEST PUSH2 0x43C DUP12 CALLER DUP5 DUP7 SUB PUSH2 0x5B6 JUMP JUMPDEST PUSH2 0x455 JUMP JUMPDEST DUP1 DUP5 GT ISZERO PUSH2 0x455 JUMPI PUSH2 0x455 CALLER DUP3 DUP7 SUB PUSH2 0x703 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x4DF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4C0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x541 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x546 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x574 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x574 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x5AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x7FC PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x633 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x614 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x695 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x69A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x6C8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x6C8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x5AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x85B PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x74F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x730 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7B1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7B6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x7F6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x827 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP INVALID SLOAD PUSH19 0x616E7366657248656C7065723A3A7361666541 PUSH17 0x70726F76653A20617070726F7665206661 PUSH10 0x6C65645472616E736665 PUSH19 0x48656C7065723A3A736166655472616E736665 PUSH19 0x414D423A20414D42207472616E736665722066 PUSH2 0x696C PUSH6 0x645472616E73 PUSH7 0x657248656C7065 PUSH19 0x3A3A736166655472616E736665723A20747261 PUSH15 0x73666572206661696C6564A2646970 PUSH7 0x73582212205F8A 0xC4 ORIGIN PUSH24 0xAE0712D80D1FBE92B1A377BC7ED20793DACE81A5F1BBB39B PUSH12 0x591064736F6C634300060600 CALLER ","sourceMap":"279:1876:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;814:1339:3;;5:9:-1;2:2;;;27:1;24;17:12;2:2;814:1339:3;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;814:1339:3;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;961:27;1008:9;-1:-1:-1;;;;;1008:21:3;;1030:5;1008:28;;;;;;;;;;;;;-1:-1:-1;;;;;1008:28:3;-1:-1:-1;;;;;1008:28:3;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1008:28:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1008:28:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1008:28:3;1066:32;;;-1:-1:-1;;;1066:32:3;;1087:10;1066:32;;;;;;1008:28;;-1:-1:-1;1047:16:3;;-1:-1:-1;;;;;1066:20:3;;;;;:32;;;;;1008:28;;1066:32;;;;;;;:20;:32;;;2:2:-1;;;;27:1;24;17:12;2:2;1066:32:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1066:32:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1066:32:3;1116:63;;;-1:-1:-1;;;1116:63:3;;1140:10;1116:63;;;;1160:4;1116:63;;;;;;;;;;;;1066:32;;-1:-1:-1;;;;;;1116:23:3;;;;;:63;;;;;1066:32;;1116:63;;;;;;;;-1:-1:-1;1116:23:3;:63;;;2:2:-1;;;;27:1;24;17:12;2:2;1116:63:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1116:63:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1116:63:3;1108:96;;;;;-1:-1:-1;;;1108:96:3;;;;;;;;;;;;-1:-1:-1;;;1108:96:3;;;;;;;;;;;;;;;1255:55;;;-1:-1:-1;;;1255:55:3;;;;;;;;1295:1;1255:55;;;;;;;;;;-1:-1:-1;;1255:55:3;;;;;;1215:16;;;;-1:-1:-1;;;;;1255:26:3;;;;;:55;;;;;;;;;;;;;1215:16;1255:26;:55;;;2:2:-1;;;;27:1;24;17:12;2:2;1255:55:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1255:55:3;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1255:55:3;;;;;;;;;-1:-1:-1;1255:55:3;-1:-1:-1;1320:65:3;1347:5;1362:6;1255:55;1320:26;:65::i;:::-;1437:190;;;-1:-1:-1;;;1437:190:3;;-1:-1:-1;;;;;1437:190:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1437:6:3;:22;;;;;;1467:11;;1437:190;;;;;;;;;;;;;;1467:11;1437:22;:190;;;2:2:-1;;;;27:1;24;17:12;2:2;1437:190:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1437:190:3;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1437:190:3;;;;;;;;;-1:-1:-1;1437:190:3;-1:-1:-1;1641:29:3;;;1637:510;;;1686:53;1713:5;1728:6;1737:1;1686:26;:53::i;:::-;1807:77;1835:5;1842:10;1870:13;1854;:29;1807:27;:77::i;:::-;1637:510;;;1919:11;1905;:25;1901:246;;;2067:69;2098:10;2124:11;2110;:25;2067:30;:69::i;:::-;814:1339;;;;;;;;;;;:::o;212:434:26:-;436:45;;;-1:-1:-1;;;;;436:45:26;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;436:45:26;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;425:57:26;;;;390:12;;404:17;;425:10;;;;436:45;425:57;;;25:18:-1;425:57:26;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;425:57:26;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;389:93:26;;;;513:7;:57;;;;-1:-1:-1;525:11:26;;:16;;:44;;;556:4;545:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;545:24:26;525:44;492:147;;;;-1:-1:-1;;;492:147:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;212:434;;;;;:::o;652:438::-;878:45;;;-1:-1:-1;;;;;878:45:26;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;878:45:26;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;867:57:26;;;;832:12;;846:17;;867:10;;;;878:45;867:57;;;25:18:-1;867:57:26;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;867:57:26;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;831:93:26;;;;955:7;:57;;;;-1:-1:-1;967:11:26;;:16;;:44;;;998:4;987:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;987:24:26;967:44;934:149;;;;-1:-1:-1;;;934:149:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:214;1700:12;;;1660;1700;;;;;;;;;-1:-1:-1;;;;;1678:7:26;;;1693:5;;1678:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1678:35:26;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1659:54:26;;;1731:7;1723:72;;;;-1:-1:-1;;;1723:72:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:214;;;:::o"},"methodIdentifiers":{"migrate(address,uint256,uint256,address,uint256)":"b7df1d25"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factoryV1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/AstraMigrator.sol\":\"AstraMigrator\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/AstraMigrator.sol\":{\"keccak256\":\"0xf4dac923f90552fc9c9d7a937046fe3c273a3e49a072d2e0ca58dcbbcb1cfe8e\",\"urls\":[\"bzz-raw://61f278f985a882b7b94a395f2a5006348e59c6942de73b9426c1986feaaae414\",\"dweb:/ipfs/QmXay8MF8gnDzASCL5MxyeaFjb2tMcj3a9qbQjmjDc6joc\"]},\"contracts/periphery/interfaces/IAstraMigrator.sol\":{\"keccak256\":\"0x28f199cd7493306e924ef8004b90eaaf1b6587e4240a2c853058d6788ec670f5\",\"urls\":[\"bzz-raw://92178cd1da83473ba10aab447751f1edb3d9736602c6934c290424ca88a66824\",\"dweb:/ipfs/QmchKnSPgRspNCis69t555UYAsrhaaYbScanEs3HFs9P7t\"]},\"contracts/periphery/interfaces/IAstraRouter01.sol\":{\"keccak256\":\"0x41f94bb4b263f1a0a17e4ca169a7057ecc6d9ff5f575c9047a57e062f7680708\",\"urls\":[\"bzz-raw://d5e155912a41505ccd8702dabc77193fb0bb0601cc0b3efc447aefa98b3a9699\",\"dweb:/ipfs/Qmaev2znL8F5UWbiZJMe124SATkzmrQz4kB5uEeBKyU5iZ\"]},\"contracts/periphery/interfaces/IERC20.sol\":{\"keccak256\":\"0x61db17aebc5d812c7002d15c1da954065e56abe49d64b14c034abe5604d70eb3\",\"urls\":[\"bzz-raw://b006685e753f9120469f10b09c159f222d4cb8b507a6c1f0c14ed50c883ebe66\",\"dweb:/ipfs/QmSyY7iTugbczPwfGK67etiyPULenYGzzRYbt8aabwwkUb\"]},\"contracts/periphery/interfaces/V1/IAstraV1Exchange.sol\":{\"keccak256\":\"0x98b4fc0788e0c690dc9f32086c4f3dec01d0bacead9463f302f61794f9d01baf\",\"urls\":[\"bzz-raw://188f6931c695a854ebefae8aca7bba7a0f401303a91e309991ce00a12e75a509\",\"dweb:/ipfs/QmUVQheF7zE8qGdUZfdmiceGkhpCGbS224TGLFggLGN7Aw\"]},\"contracts/periphery/interfaces/V1/IAstraV1Factory.sol\":{\"keccak256\":\"0x4116b464fdb13158f841346fad13b237dc6498d9db48ffab3f5ebe707e256ee7\",\"urls\":[\"bzz-raw://0203c6ca28866e670b226ac448801e8caee73b554a3106c81eb0a270317b9723\",\"dweb:/ipfs/QmeNTHK7vtHJB2PaqiCZmpvNMB9ZttE2HNBVFd6FrMK7DE\"]},\"contracts/periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0x91888c39fcda3d21089c867d943b013f02165203b62e6925b898e5652df313e0\",\"urls\":[\"bzz-raw://ef6af53c706fd1e4a3f5b974bf46f5b811cad331126802f466a56e53b32757a7\",\"dweb:/ipfs/QmdWuxHaLq1wyFgTo5aBBAEcqE2XqGwi249rr8NsTY9qsu\"]}},\"version\":1}"}},"contracts/periphery/AstraRouter01.sol":{"AstraRouter01":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_SAMB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityAMB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAMB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityAMB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAMB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityAMBWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAMB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapAMBForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactAMBForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForAMB","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactAMB","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b5060405161363d38038061363d8339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c61350161013c600039806101285280610d2d5280610ec85280610fa852806110df5280611135528061116952806111dd5280611430528061149a52806115ee52806116765280611ac25280611c5c5280611c975280611ead5280611ffe52806120865250806109d05280610a095280610b445280610c1b5280610dc95280610f8652806111135280611380528061153b52806116a8528061182b5280611a235280611a4c5280611b5e5280611d8c5280611f4e52806120b8528061283552806128785280612af55280612ba35280612c2352506135016000f3fe6080604052600436106101185760003560e01c806390793ea8116100a0578063d06ca61f11610064578063d06ca61f14610730578063e5dee373146107e5578063e77bdfc51461087b578063e8e33700146108ce578063ef0dc4be1461093057610151565b806390793ea8146105d3578063ac8ee3b614610604578063ad615dec14610688578063baa2abde146106be578063c45a01551461071b57610151565b806340d2463f116100e757806340d2463f146103d05780636eeccb891461046657806384b0b3a2146104d957806385f8c259146101565780638803dbee1461053d57610151565b8063054d50d4146101565780631f00ca741461019e5780632195995c146102a357806338ed17391461033a57610151565b3661015157336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461014f57fe5b005b600080fd5b34801561016257600080fd5b5061018c6004803603606081101561017957600080fd5b50803590602081013590604001356109b4565b60408051918252519081900360200190f35b3480156101aa57600080fd5b50610253600480360360408110156101c157600080fd5b81359190810190604081016020820135600160201b8111156101e257600080fd5b8201836020820111156101f457600080fd5b803590602001918460208302840111600160201b8311171561021557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506109c9945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561028f578181015183820152602001610277565b505050509050019250505060405180910390f35b3480156102af57600080fd5b5061032160048036036101608110156102c757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff61010082013516906101208101359061014001356109ff565b6040805192835260208301919091528051918290030190f35b34801561034657600080fd5b50610253600480360360a081101561035d57600080fd5b813591602081013591810190606081016040820135600160201b81111561038357600080fd5b82018360208201111561039557600080fd5b803590602001918460208302840111600160201b831117156103b657600080fd5b91935091506001600160a01b038135169060200135610af9565b3480156103dc57600080fd5b50610253600480360360a08110156103f357600080fd5b813591602081013591810190606081016040820135600160201b81111561041957600080fd5b82018360208201111561042b57600080fd5b803590602001918460208302840111600160201b8311171561044c57600080fd5b91935091506001600160a01b038135169060200135610cdd565b34801561047257600080fd5b50610321600480360361014081101561048a57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135610f7c565b61051f600480360360c08110156104ef57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611090565b60408051938452602084019290925282820152519081900360600190f35b34801561054957600080fd5b50610253600480360360a081101561056057600080fd5b813591602081013591810190606081016040820135600160201b81111561058657600080fd5b82018360208201111561059857600080fd5b803590602001918460208302840111600160201b831117156105b957600080fd5b91935091506001600160a01b038135169060200135611335565b3480156105df57600080fd5b506105e861142e565b604080516001600160a01b039092168252519081900360200190f35b6102536004803603608081101561061a57600080fd5b81359190810190604081016020820135600160201b81111561063b57600080fd5b82018360208201111561064d57600080fd5b803590602001918460208302840111600160201b8311171561066e57600080fd5b91935091506001600160a01b038135169060200135611452565b34801561069457600080fd5b5061018c600480360360608110156106ab57600080fd5b50803590602081013590604001356117d0565b3480156106ca57600080fd5b50610321600480360360e08110156106e157600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356117dd565b34801561072757600080fd5b506105e8611a21565b34801561073c57600080fd5b506102536004803603604081101561075357600080fd5b81359190810190604081016020820135600160201b81111561077457600080fd5b82018360208201111561078657600080fd5b803590602001918460208302840111600160201b831117156107a757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611a45945050505050565b3480156107f157600080fd5b50610253600480360360a081101561080857600080fd5b813591602081013591810190606081016040820135600160201b81111561082e57600080fd5b82018360208201111561084057600080fd5b803590602001918460208302840111600160201b8311171561086157600080fd5b91935091506001600160a01b038135169060200135611a72565b34801561088757600080fd5b50610321600480360360c081101561089e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611c0f565b3480156108da57600080fd5b5061051f60048036036101008110156108f257600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135611d29565b6102536004803603608081101561094657600080fd5b81359190810190604081016020820135600160201b81111561096757600080fd5b82018360208201111561097957600080fd5b803590602001918460208302840111600160201b8311171561099a57600080fd5b91935091506001600160a01b038135169060200135611e65565b60006109c18484846121f5565b949350505050565b60606109f67f000000000000000000000000000000000000000000000000000000000000000084846122e5565b90505b92915050565b6000806000610a2f7f00000000000000000000000000000000000000000000000000000000000000008f8f612432565b9050600087610a3e578c610a42565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610ab857600080fd5b505af1158015610acc573d6000803e3d6000fd5b50505050610adf8f8f8f8f8f8f8f6117dd565b809450819550505050509b509b9950505050505050505050565b60608142811015610b3f576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b610b9d7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124f292505050565b91508682600184510381518110610bb057fe5b60200260200101511015610bf55760405162461bcd60e51b815260040180806020018281038252602781526020018061338e6027913960400191505060405180910390fd5b610c9386866000818110610c0557fe5b905060200201356001600160a01b031633610c797f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610c4757fe5b905060200201356001600160a01b03168b8b6001818110610c6457fe5b905060200201356001600160a01b0316612432565b85600081518110610c8657fe5b6020026020010151612629565b610cd282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612786915050565b509695505050505050565b60608142811015610d23576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110610d5d57fe5b905060200201356001600160a01b03166001600160a01b031614610dc4576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b610e227f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506122e592505050565b91508682600081518110610e3257fe5b60200260200101511115610e775760405162461bcd60e51b81526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b610e8786866000818110610c0557fe5b610ec682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250612786915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d83600185510381518110610f0557fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f4357600080fd5b505af1158015610f57573d6000803e3d6000fd5b50505050610cd28483600185510381518110610f6f57fe5b60200260200101516129cc565b6000806000610fcc7f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000612432565b9050600087610fdb578c610fdf565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561105557600080fd5b505af1158015611069573d6000803e3d6000fd5b5050505061107b8e8e8e8e8e8e611c0f565b909f909e509c50505050505050505050505050565b600080600083428110156110d9576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6111078a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c612ac4565b909450925060006111597f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000612432565b90506111678b338388612629565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156111c257600080fd5b505af11580156111d6573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b505050506040513d602081101561128557600080fd5b505161128d57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b505050506040513d602081101561130f57600080fd5b505192503484101561132757611327338534036129cc565b505096509650969350505050565b6060814281101561137b576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6113d97f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506122e592505050565b915086826000815181106113e957fe5b60200260200101511115610bf55760405162461bcd60e51b81526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b60608142811015611498576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316868660008181106114cf57fe5b905060200201356001600160a01b03166001600160a01b031614611536576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b6115947f0000000000000000000000000000000000000000000000000000000000000000348888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124f292505050565b915086826001845103815181106115a757fe5b602002602001015110156115ec5760405162461bcd60e51b815260040180806020018281038252602781526020018061338e6027913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061162857fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561165b57600080fd5b505af115801561166f573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6116f17f0000000000000000000000000000000000000000000000000000000000000000898960008181106116d457fe5b905060200201356001600160a01b03168a8a6001818110610c6457fe5b846000815181106116fe57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561175557600080fd5b505af1158015611769573d6000803e3d6000fd5b505050506040513d602081101561177f57600080fd5b505161178757fe5b6117c682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612786915050565b5095945050505050565b60006109c1848484612d38565b6000808242811015611824576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b60006118517f00000000000000000000000000000000000000000000000000000000000000008c8c612432565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b1580156118ac57600080fd5b505af11580156118c0573d6000803e3d6000fd5b505050506040513d60208110156118d657600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561192357600080fd5b505af1158015611937573d6000803e3d6000fd5b505050506040513d604081101561194d57600080fd5b508051602090910151909250905060006119678e8e612de4565b509050806001600160a01b03168e6001600160a01b03161461198a57818361198d565b82825b90975095508a8710156119d15760405162461bcd60e51b815260040180806020018281038252602281526020018061331a6022913960400191505060405180910390fd5b89861015611a105760405162461bcd60e51b81526004018080602001828103825260228152602001806132f86022913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606109f67f000000000000000000000000000000000000000000000000000000000000000084846124f2565b60608142811015611ab8576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110611af257fe5b905060200201356001600160a01b03166001600160a01b031614611b59576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b611bb77f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124f292505050565b91508682600184510381518110611bca57fe5b60200260200101511015610e775760405162461bcd60e51b815260040180806020018281038252602781526020018061338e6027913960400191505060405180910390fd5b6000808242811015611c56576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b611c85897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6117dd565b9093509150611c95898685612ec2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611cfb57600080fd5b505af1158015611d0f573d6000803e3d6000fd5b50505050611d1d85836129cc565b50965096945050505050565b60008060008342811015611d72576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b611d808c8c8c8c8c8c612ac4565b90945092506000611db27f00000000000000000000000000000000000000000000000000000000000000008e8e612432565b9050611dc08d338388612629565b611dcc8c338387612629565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611e2457600080fd5b505af1158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b5051949d939c50939a509198505050505050505050565b60608142811015611eab576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611ee257fe5b905060200201356001600160a01b03166001600160a01b031614611f49576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b611fa77f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506122e592505050565b91503482600081518110611fb757fe5b60200260200101511115611ffc5760405162461bcd60e51b81526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061203857fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561206b57600080fd5b505af115801561207f573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6120e47f0000000000000000000000000000000000000000000000000000000000000000898960008181106116d457fe5b846000815181106120f157fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561214857600080fd5b505af115801561215c573d6000803e3d6000fd5b505050506040513d602081101561217257600080fd5b505161217a57fe5b6121b982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612786915050565b816000815181106121c657fe5b60200260200101513411156117c6576117c633836000815181106121e657fe5b602002602001015134036129cc565b60008084116122355760405162461bcd60e51b81526004018080602001828103825260278152602001806133d56027913960400191505060405180910390fd5b6000831180156122455750600082115b6122805760405162461bcd60e51b81526004018080602001828103825260248152602001806134a86024913960400191505060405180910390fd5b6000612294856103e563ffffffff61301616565b905060006122a8828563ffffffff61301616565b905060006122ce836122c2886103e863ffffffff61301616565b9063ffffffff61307916565b90508082816122d957fe5b04979650505050505050565b606060028251101561233e576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561235657600080fd5b50604051908082528060200260200182016040528015612380578160200160208202803683370190505b509050828160018351038151811061239457fe5b60209081029190910101528151600019015b801561242a576000806123e3878660018603815181106123c257fe5b60200260200101518786815181106123d657fe5b60200260200101516130c8565b915091506124058484815181106123f657fe5b60200260200101518383613196565b84600185038151811061241457fe5b60209081029190910101525050600019016123a6565b509392505050565b60008060006124418585612de4565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b606060028251101561254b576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561256357600080fd5b5060405190808252806020026020018201604052801561258d578160200160208202803683370190505b509050828160008151811061259e57fe5b60200260200101818152505060005b600183510381101561242a576000806125e3878685815181106125cc57fe5b60200260200101518786600101815181106123d657fe5b915091506126058484815181106125f657fe5b602002602001015183836121f5565b84846001018151811061261457fe5b602090810291909101015250506001016125ad565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106126ae5780518252601f19909201916020918201910161268f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612710576040519150601f19603f3d011682016040523d82523d6000602084013e612715565b606091505b5091509150818015612743575080511580612743575080806020019051602081101561274057600080fd5b50515b61277e5760405162461bcd60e51b815260040180806020018281038252603181526020018061335d6031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156129c6576000808483815181106127a457fe5b60200260200101518584600101815181106127bb57fe5b60200260200101519150915060006127d38383612de4565b50905060008785600101815181106127e757fe5b60200260200101519050600080836001600160a01b0316866001600160a01b03161461281557826000612819565b6000835b91509150600060028a510388106128305788612871565b6128717f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061286457fe5b6020026020010151612432565b905061289e7f00000000000000000000000000000000000000000000000000000000000000008888612432565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156128db576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561294c578181015183820152602001612934565b50505050905090810190601f1680156129795780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561299b57600080fd5b505af11580156129af573d6000803e3d6000fd5b505060019099019850612789975050505050505050565b50505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310612a185780518252601f1990920191602091820191016129f9565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612a7a576040519150601f19603f3d011682016040523d82523d6000602084013e612a7f565b606091505b5050905080612abf5760405162461bcd60e51b815260040180806020018281038252603481526020018061341f6034913960400191505060405180910390fd5b505050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015612b3e57600080fd5b505afa158015612b52573d6000803e3d6000fd5b505050506040513d6020811015612b6857600080fd5b50516001600160a01b03161415612c1b57604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b158015612bee57600080fd5b505af1158015612c02573d6000803e3d6000fd5b505050506040513d6020811015612c1857600080fd5b50505b600080612c497f00000000000000000000000000000000000000000000000000000000000000008b8b6130c8565b91509150816000148015612c5b575080155b15612c6b57879350869250612d2b565b6000612c78898484612d38565b9050878111612ccb5785811015612cc05760405162461bcd60e51b81526004018080602001828103825260228152602001806132f86022913960400191505060405180910390fd5b889450925082612d29565b6000612cd8898486612d38565b905089811115612ce457fe5b87811015612d235760405162461bcd60e51b815260040180806020018281038252602281526020018061331a6022913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000808411612d785760405162461bcd60e51b81526004018080602001828103825260218152602001806132d76021913960400191505060405180910390fd5b600083118015612d885750600082115b612dc35760405162461bcd60e51b81526004018080602001828103825260248152602001806134a86024913960400191505060405180910390fd5b82612dd4858463ffffffff61301616565b81612ddb57fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415612e385760405162461bcd60e51b815260040180806020018281038252602181526020018061333c6021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610612e58578284612e5b565b83835b90925090506001600160a01b038216612ebb576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310612f3f5780518252601f199092019160209182019101612f20565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612fa1576040519150601f19603f3d011682016040523d82523d6000602084013e612fa6565b606091505b5091509150818015612fd4575080511580612fd45750808060200190516020811015612fd157600080fd5b50515b61300f5760405162461bcd60e51b815260040180806020018281038252602d815260200180613453602d913960400191505060405180910390fd5b5050505050565b60008115806130315750508082028282828161302e57fe5b04145b6109f9576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b808201828110156109f9576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60008060006130d78585612de4565b5090506000806130e8888888612432565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561312057600080fd5b505afa158015613134573d6000803e3d6000fd5b505050506040513d606081101561314a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614613184578082613187565b81815b90999098509650505050505050565b60008084116131d65760405162461bcd60e51b81526004018080602001828103825260288152602001806134806028913960400191505060405180910390fd5b6000831180156131e65750600082115b6132215760405162461bcd60e51b81526004018080602001828103825260248152602001806134a86024913960400191505060405180910390fd5b60006132456103e8613239868863ffffffff61301616565b9063ffffffff61301616565b9050600061325f6103e5613239868963ffffffff61328616565b905061327c600182848161326f57fe5b049063ffffffff61307916565b9695505050505050565b808203828111156109f9576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fdfe41737472614c6962726172793a20494e53554646494349454e545f414d4f554e544173747261526f757465723a20494e53554646494349454e545f425f414d4f554e544173747261526f757465723a20494e53554646494349454e545f415f414d4f554e5441737472614c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544173747261526f757465723a204558504952454400000000000000000000000041737472614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544173747261526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a736166655472616e73666572414d423a20414d42207472616e73666572206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c656441737472614c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5441737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459a2646970667358221220bfa04523c334c3627547c4fa89675283d138d3ebfd7e65557c5375348ca4c29864736f6c63430006060033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x363D CODESIZE SUB DUP1 PUSH2 0x363D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0x3501 PUSH2 0x13C PUSH1 0x0 CODECOPY DUP1 PUSH2 0x128 MSTORE DUP1 PUSH2 0xD2D MSTORE DUP1 PUSH2 0xEC8 MSTORE DUP1 PUSH2 0xFA8 MSTORE DUP1 PUSH2 0x10DF MSTORE DUP1 PUSH2 0x1135 MSTORE DUP1 PUSH2 0x1169 MSTORE DUP1 PUSH2 0x11DD MSTORE DUP1 PUSH2 0x1430 MSTORE DUP1 PUSH2 0x149A MSTORE DUP1 PUSH2 0x15EE MSTORE DUP1 PUSH2 0x1676 MSTORE DUP1 PUSH2 0x1AC2 MSTORE DUP1 PUSH2 0x1C5C MSTORE DUP1 PUSH2 0x1C97 MSTORE DUP1 PUSH2 0x1EAD MSTORE DUP1 PUSH2 0x1FFE MSTORE DUP1 PUSH2 0x2086 MSTORE POP DUP1 PUSH2 0x9D0 MSTORE DUP1 PUSH2 0xA09 MSTORE DUP1 PUSH2 0xB44 MSTORE DUP1 PUSH2 0xC1B MSTORE DUP1 PUSH2 0xDC9 MSTORE DUP1 PUSH2 0xF86 MSTORE DUP1 PUSH2 0x1113 MSTORE DUP1 PUSH2 0x1380 MSTORE DUP1 PUSH2 0x153B MSTORE DUP1 PUSH2 0x16A8 MSTORE DUP1 PUSH2 0x182B MSTORE DUP1 PUSH2 0x1A23 MSTORE DUP1 PUSH2 0x1A4C MSTORE DUP1 PUSH2 0x1B5E MSTORE DUP1 PUSH2 0x1D8C MSTORE DUP1 PUSH2 0x1F4E MSTORE DUP1 PUSH2 0x20B8 MSTORE DUP1 PUSH2 0x2835 MSTORE DUP1 PUSH2 0x2878 MSTORE DUP1 PUSH2 0x2AF5 MSTORE DUP1 PUSH2 0x2BA3 MSTORE DUP1 PUSH2 0x2C23 MSTORE POP PUSH2 0x3501 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x118 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90793EA8 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xD06CA61F GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD06CA61F EQ PUSH2 0x730 JUMPI DUP1 PUSH4 0xE5DEE373 EQ PUSH2 0x7E5 JUMPI DUP1 PUSH4 0xE77BDFC5 EQ PUSH2 0x87B JUMPI DUP1 PUSH4 0xE8E33700 EQ PUSH2 0x8CE JUMPI DUP1 PUSH4 0xEF0DC4BE EQ PUSH2 0x930 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x5D3 JUMPI DUP1 PUSH4 0xAC8EE3B6 EQ PUSH2 0x604 JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x688 JUMPI DUP1 PUSH4 0xBAA2ABDE EQ PUSH2 0x6BE JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x71B JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x40D2463F GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0x40D2463F EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x6EECCB89 EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0x84B0B3A2 EQ PUSH2 0x4D9 JUMPI DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x53D JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x2195995C EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x33A JUMPI PUSH2 0x151 JUMP JUMPDEST CALLDATASIZE PUSH2 0x151 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x14F JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x9B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x9C9 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x277 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x160 DUP2 LT ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x120 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x9FF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x346 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAF9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x42B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xCDD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x51F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x1090 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1335 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E8 PUSH2 0x142E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x61A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x63B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1452 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x17D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x6E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x17DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E8 PUSH2 0x1A21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1A45 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x82E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x861 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x89E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x1C0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x8F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x1D29 JUMP JUMPDEST PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x946 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x99A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E65 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C1 DUP5 DUP5 DUP5 PUSH2 0x21F5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9F6 PUSH32 0x0 DUP5 DUP5 PUSH2 0x22E5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA2F PUSH32 0x0 DUP16 DUP16 PUSH2 0x2432 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0xA3E JUMPI DUP13 PUSH2 0xA42 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xACC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xADF DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x17DD JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP POP POP SWAP12 POP SWAP12 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xB3F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB9D PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x24F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xBB0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0xBF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x338E PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC93 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xC05 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0xC79 PUSH32 0x0 DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xC47 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xC64 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2432 JUMP JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC86 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2629 JUMP JUMPDEST PUSH2 0xCD2 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x2786 SWAP2 POP POP JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xD23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0xD5D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xDC4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x82E6E8E4C2A4DEEAE8CAE47440929CAC82989288BEA082A89 PUSH1 0x3B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE22 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x22E5 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE32 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xE77 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x33FC PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE87 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xC05 JUMPI INVALID JUMPDEST PUSH2 0xEC6 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x2786 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xF05 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xCD2 DUP5 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xF6F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x29CC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xFCC PUSH32 0x0 DUP15 PUSH32 0x0 PUSH2 0x2432 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0xFDB JUMPI DUP13 PUSH2 0xFDF JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1055 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1069 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x107B DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0x1C0F JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x10D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1107 DUP11 PUSH32 0x0 DUP12 CALLVALUE DUP13 DUP13 PUSH2 0x2AC4 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x1159 PUSH32 0x0 DUP13 PUSH32 0x0 PUSH2 0x2432 JUMP JUMPDEST SWAP1 POP PUSH2 0x1167 DUP12 CALLER DUP4 DUP9 PUSH2 0x2629 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP3 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x125B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x126F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x128D JUMPI INVALID JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x130F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP CALLVALUE DUP5 LT ISZERO PUSH2 0x1327 JUMPI PUSH2 0x1327 CALLER DUP6 CALLVALUE SUB PUSH2 0x29CC JUMP JUMPDEST POP POP SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x137B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13D9 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x22E5 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x13E9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xBF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x33FC PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1498 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x14CF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1536 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x82E6E8E4C2A4DEEAE8CAE47440929CAC82989288BEA082A89 PUSH1 0x3B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1594 PUSH32 0x0 CALLVALUE DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x24F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x15A7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x15EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x338E PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1628 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x165B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x166F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x16F1 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x16D4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xC64 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x16FE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1755 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1769 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x177F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1787 JUMPI INVALID JUMPDEST PUSH2 0x17C6 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x2786 SWAP2 POP POP JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C1 DUP5 DUP5 DUP5 PUSH2 0x2D38 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1824 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1851 PUSH32 0x0 DUP13 DUP13 PUSH2 0x2432 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x226BF2D1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 DUP7 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1923 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1937 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x194D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1967 DUP15 DUP15 PUSH2 0x2DE4 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x198A JUMPI DUP2 DUP4 PUSH2 0x198D JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP8 LT ISZERO PUSH2 0x19D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x331A PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 DUP7 LT ISZERO PUSH2 0x1A10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32F8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9F6 PUSH32 0x0 DUP5 DUP5 PUSH2 0x24F2 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1AB8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x1AF2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1B59 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x82E6E8E4C2A4DEEAE8CAE47440929CAC82989288BEA082A89 PUSH1 0x3B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1BB7 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x24F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1BCA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0xE77 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x338E PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1C56 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1C85 DUP10 PUSH32 0x0 DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x17DD JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x1C95 DUP10 DUP7 DUP6 PUSH2 0x2EC2 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D0F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1D1D DUP6 DUP4 PUSH2 0x29CC JUMP JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1D72 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D80 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x2AC4 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x1DB2 PUSH32 0x0 DUP15 DUP15 PUSH2 0x2432 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DC0 DUP14 CALLER DUP4 DUP9 PUSH2 0x2629 JUMP JUMPDEST PUSH2 0x1DCC DUP13 CALLER DUP4 DUP8 PUSH2 0x2629 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP14 SWAP4 SWAP13 POP SWAP4 SWAP11 POP SWAP2 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1EAB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1EE2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1F49 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x82E6E8E4C2A4DEEAE8CAE47440929CAC82989288BEA082A89 PUSH1 0x3B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1FA7 PUSH32 0x0 DUP9 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x22E5 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP CALLVALUE DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1FB7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1FFC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x33FC PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2038 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x206B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x207F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x20E4 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x16D4 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x20F1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x215C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2172 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x217A JUMPI INVALID JUMPDEST PUSH2 0x21B9 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x2786 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x21C6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x17C6 JUMPI PUSH2 0x17C6 CALLER DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x21E6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x29CC JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x2235 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x33D5 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x2245 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x2280 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x34A8 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2294 DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0x3016 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x22A8 DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x3016 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x22CE DUP4 PUSH2 0x22C2 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x3016 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3079 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x22D9 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x233E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A20494E56414C49445F50415448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2380 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x2394 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH1 0x0 NOT ADD JUMPDEST DUP1 ISZERO PUSH2 0x242A JUMPI PUSH1 0x0 DUP1 PUSH2 0x23E3 DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0x23C2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x23D6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x30C8 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2405 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x23F6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3196 JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x2414 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x0 NOT ADD PUSH2 0x23A6 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2441 DUP6 DUP6 PUSH2 0x2DE4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x254B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A20494E56414C49445F50415448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x258D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x259E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x242A JUMPI PUSH1 0x0 DUP1 PUSH2 0x25E3 DUP8 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x25CC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x23D6 JUMPI INVALID JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2605 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x25F6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x21F5 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2614 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x25AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x26AE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x268F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2710 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2715 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2743 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2743 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2740 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x277E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x335D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x29C6 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x27A4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x27BB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x27D3 DUP4 DUP4 PUSH2 0x2DE4 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP8 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x27E7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2815 JUMPI DUP3 PUSH1 0x0 PUSH2 0x2819 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP11 MLOAD SUB DUP9 LT PUSH2 0x2830 JUMPI DUP9 PUSH2 0x2871 JUMP JUMPDEST PUSH2 0x2871 PUSH32 0x0 DUP8 DUP13 DUP12 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2864 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2432 JUMP JUMPDEST SWAP1 POP PUSH2 0x289E PUSH32 0x0 DUP9 DUP9 PUSH2 0x2432 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x22C0D9F DUP5 DUP5 DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x28DB JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x294C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2934 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2979 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x299B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x29AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP10 ADD SWAP9 POP PUSH2 0x2789 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2A18 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x29F9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2A7A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A7F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2ABF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x341F PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6A43905 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xE6A43905 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2C1B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0x64E329CB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xC9C65396 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C49 PUSH32 0x0 DUP12 DUP12 PUSH2 0x30C8 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x2C5B JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x2C6B JUMPI DUP8 SWAP4 POP DUP7 SWAP3 POP PUSH2 0x2D2B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C78 DUP10 DUP5 DUP5 PUSH2 0x2D38 JUMP JUMPDEST SWAP1 POP DUP8 DUP2 GT PUSH2 0x2CCB JUMPI DUP6 DUP2 LT ISZERO PUSH2 0x2CC0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32F8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 SWAP5 POP SWAP3 POP DUP3 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CD8 DUP10 DUP5 DUP7 PUSH2 0x2D38 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 GT ISZERO PUSH2 0x2CE4 JUMPI INVALID JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x2D23 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x331A PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 POP DUP8 SWAP4 POP JUMPDEST POP JUMPDEST POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x2D78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32D7 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x2D88 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x2DC3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x34A8 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x2DD4 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3016 AND JUMP JUMPDEST DUP2 PUSH2 0x2DDB JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2E38 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x333C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x2E58 JUMPI DUP3 DUP5 PUSH2 0x2E5B JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2EBB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2F3F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2F20 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2FA1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2FA6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2FD4 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2FD4 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x300F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3453 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x3031 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x302E JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x9F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6D756C2D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x30D7 DUP6 DUP6 PUSH2 0x2DE4 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x30E8 DUP9 DUP9 DUP9 PUSH2 0x2432 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3134 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x314A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x3184 JUMPI DUP1 DUP3 PUSH2 0x3187 JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x31D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3480 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x31E6 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3221 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x34A8 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3245 PUSH2 0x3E8 PUSH2 0x3239 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x3016 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3016 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x325F PUSH2 0x3E5 PUSH2 0x3239 DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3286 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x327C PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0x326F JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3079 AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20494E53554646494349 GASLIMIT 0x4E SLOAD 0x5F TIMESTAMP 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20494E53554646494349 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C6564417374 PUSH19 0x61526F757465723A20494E5355464649434945 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20455850495245440000 STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20455843455353495645 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A3A7361666554 PUSH19 0x616E73666572414D423A20414D42207472616E PUSH20 0x666572206661696C65645472616E736665724865 PUSH13 0x7065723A3A736166655472616E PUSH20 0x6665723A207472616E73666572206661696C6564 COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF LOG0 GASLIMIT 0x23 0xC3 CALLVALUE 0xC3 PUSH3 0x7547C4 STATICCALL DUP10 PUSH8 0x5283D138D3EBFD7E PUSH6 0x557C5375348C LOG4 0xC2 SWAP9 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"263:14581:4:-:0;;;530:109;5:9:-1;2:2;;;27:1;24;17:12;2:2;530:109:4;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;530:109:4;;;;;;;-1:-1:-1;;;;;;592:18:4;;;;;;;;620:12;;;;;263:14581;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"501":[{"length":32,"start":2512},{"length":32,"start":2569},{"length":32,"start":2884},{"length":32,"start":3099},{"length":32,"start":3529},{"length":32,"start":3974},{"length":32,"start":4371},{"length":32,"start":4992},{"length":32,"start":5435},{"length":32,"start":5800},{"length":32,"start":6187},{"length":32,"start":6691},{"length":32,"start":6732},{"length":32,"start":7006},{"length":32,"start":7564},{"length":32,"start":8014},{"length":32,"start":8376},{"length":32,"start":10293},{"length":32,"start":10360},{"length":32,"start":10997},{"length":32,"start":11171},{"length":32,"start":11299}],"504":[{"length":32,"start":296},{"length":32,"start":3373},{"length":32,"start":3784},{"length":32,"start":4008},{"length":32,"start":4319},{"length":32,"start":4405},{"length":32,"start":4457},{"length":32,"start":4573},{"length":32,"start":5168},{"length":32,"start":5274},{"length":32,"start":5614},{"length":32,"start":5750},{"length":32,"start":6850},{"length":32,"start":7260},{"length":32,"start":7319},{"length":32,"start":7853},{"length":32,"start":8190},{"length":32,"start":8326}]},"linkReferences":{},"object":"6080604052600436106101185760003560e01c806390793ea8116100a0578063d06ca61f11610064578063d06ca61f14610730578063e5dee373146107e5578063e77bdfc51461087b578063e8e33700146108ce578063ef0dc4be1461093057610151565b806390793ea8146105d3578063ac8ee3b614610604578063ad615dec14610688578063baa2abde146106be578063c45a01551461071b57610151565b806340d2463f116100e757806340d2463f146103d05780636eeccb891461046657806384b0b3a2146104d957806385f8c259146101565780638803dbee1461053d57610151565b8063054d50d4146101565780631f00ca741461019e5780632195995c146102a357806338ed17391461033a57610151565b3661015157336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461014f57fe5b005b600080fd5b34801561016257600080fd5b5061018c6004803603606081101561017957600080fd5b50803590602081013590604001356109b4565b60408051918252519081900360200190f35b3480156101aa57600080fd5b50610253600480360360408110156101c157600080fd5b81359190810190604081016020820135600160201b8111156101e257600080fd5b8201836020820111156101f457600080fd5b803590602001918460208302840111600160201b8311171561021557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506109c9945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561028f578181015183820152602001610277565b505050509050019250505060405180910390f35b3480156102af57600080fd5b5061032160048036036101608110156102c757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff61010082013516906101208101359061014001356109ff565b6040805192835260208301919091528051918290030190f35b34801561034657600080fd5b50610253600480360360a081101561035d57600080fd5b813591602081013591810190606081016040820135600160201b81111561038357600080fd5b82018360208201111561039557600080fd5b803590602001918460208302840111600160201b831117156103b657600080fd5b91935091506001600160a01b038135169060200135610af9565b3480156103dc57600080fd5b50610253600480360360a08110156103f357600080fd5b813591602081013591810190606081016040820135600160201b81111561041957600080fd5b82018360208201111561042b57600080fd5b803590602001918460208302840111600160201b8311171561044c57600080fd5b91935091506001600160a01b038135169060200135610cdd565b34801561047257600080fd5b50610321600480360361014081101561048a57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135610f7c565b61051f600480360360c08110156104ef57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611090565b60408051938452602084019290925282820152519081900360600190f35b34801561054957600080fd5b50610253600480360360a081101561056057600080fd5b813591602081013591810190606081016040820135600160201b81111561058657600080fd5b82018360208201111561059857600080fd5b803590602001918460208302840111600160201b831117156105b957600080fd5b91935091506001600160a01b038135169060200135611335565b3480156105df57600080fd5b506105e861142e565b604080516001600160a01b039092168252519081900360200190f35b6102536004803603608081101561061a57600080fd5b81359190810190604081016020820135600160201b81111561063b57600080fd5b82018360208201111561064d57600080fd5b803590602001918460208302840111600160201b8311171561066e57600080fd5b91935091506001600160a01b038135169060200135611452565b34801561069457600080fd5b5061018c600480360360608110156106ab57600080fd5b50803590602081013590604001356117d0565b3480156106ca57600080fd5b50610321600480360360e08110156106e157600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c001356117dd565b34801561072757600080fd5b506105e8611a21565b34801561073c57600080fd5b506102536004803603604081101561075357600080fd5b81359190810190604081016020820135600160201b81111561077457600080fd5b82018360208201111561078657600080fd5b803590602001918460208302840111600160201b831117156107a757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611a45945050505050565b3480156107f157600080fd5b50610253600480360360a081101561080857600080fd5b813591602081013591810190606081016040820135600160201b81111561082e57600080fd5b82018360208201111561084057600080fd5b803590602001918460208302840111600160201b8311171561086157600080fd5b91935091506001600160a01b038135169060200135611a72565b34801561088757600080fd5b50610321600480360360c081101561089e57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135611c0f565b3480156108da57600080fd5b5061051f60048036036101008110156108f257600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135611d29565b6102536004803603608081101561094657600080fd5b81359190810190604081016020820135600160201b81111561096757600080fd5b82018360208201111561097957600080fd5b803590602001918460208302840111600160201b8311171561099a57600080fd5b91935091506001600160a01b038135169060200135611e65565b60006109c18484846121f5565b949350505050565b60606109f67f000000000000000000000000000000000000000000000000000000000000000084846122e5565b90505b92915050565b6000806000610a2f7f00000000000000000000000000000000000000000000000000000000000000008f8f612432565b9050600087610a3e578c610a42565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610ab857600080fd5b505af1158015610acc573d6000803e3d6000fd5b50505050610adf8f8f8f8f8f8f8f6117dd565b809450819550505050509b509b9950505050505050505050565b60608142811015610b3f576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b610b9d7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124f292505050565b91508682600184510381518110610bb057fe5b60200260200101511015610bf55760405162461bcd60e51b815260040180806020018281038252602781526020018061338e6027913960400191505060405180910390fd5b610c9386866000818110610c0557fe5b905060200201356001600160a01b031633610c797f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610c4757fe5b905060200201356001600160a01b03168b8b6001818110610c6457fe5b905060200201356001600160a01b0316612432565b85600081518110610c8657fe5b6020026020010151612629565b610cd282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612786915050565b509695505050505050565b60608142811015610d23576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110610d5d57fe5b905060200201356001600160a01b03166001600160a01b031614610dc4576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b610e227f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506122e592505050565b91508682600081518110610e3257fe5b60200260200101511115610e775760405162461bcd60e51b81526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b610e8786866000818110610c0557fe5b610ec682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250612786915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d83600185510381518110610f0557fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f4357600080fd5b505af1158015610f57573d6000803e3d6000fd5b50505050610cd28483600185510381518110610f6f57fe5b60200260200101516129cc565b6000806000610fcc7f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000612432565b9050600087610fdb578c610fdf565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561105557600080fd5b505af1158015611069573d6000803e3d6000fd5b5050505061107b8e8e8e8e8e8e611c0f565b909f909e509c50505050505050505050505050565b600080600083428110156110d9576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6111078a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c612ac4565b909450925060006111597f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000612432565b90506111678b338388612629565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156111c257600080fd5b505af11580156111d6573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb82866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561125b57600080fd5b505af115801561126f573d6000803e3d6000fd5b505050506040513d602081101561128557600080fd5b505161128d57fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b1580156112e557600080fd5b505af11580156112f9573d6000803e3d6000fd5b505050506040513d602081101561130f57600080fd5b505192503484101561132757611327338534036129cc565b505096509650969350505050565b6060814281101561137b576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6113d97f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506122e592505050565b915086826000815181106113e957fe5b60200260200101511115610bf55760405162461bcd60e51b81526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b60608142811015611498576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316868660008181106114cf57fe5b905060200201356001600160a01b03166001600160a01b031614611536576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b6115947f0000000000000000000000000000000000000000000000000000000000000000348888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124f292505050565b915086826001845103815181106115a757fe5b602002602001015110156115ec5760405162461bcd60e51b815260040180806020018281038252602781526020018061338e6027913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061162857fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561165b57600080fd5b505af115801561166f573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6116f17f0000000000000000000000000000000000000000000000000000000000000000898960008181106116d457fe5b905060200201356001600160a01b03168a8a6001818110610c6457fe5b846000815181106116fe57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561175557600080fd5b505af1158015611769573d6000803e3d6000fd5b505050506040513d602081101561177f57600080fd5b505161178757fe5b6117c682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612786915050565b5095945050505050565b60006109c1848484612d38565b6000808242811015611824576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b60006118517f00000000000000000000000000000000000000000000000000000000000000008c8c612432565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b1580156118ac57600080fd5b505af11580156118c0573d6000803e3d6000fd5b505050506040513d60208110156118d657600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b15801561192357600080fd5b505af1158015611937573d6000803e3d6000fd5b505050506040513d604081101561194d57600080fd5b508051602090910151909250905060006119678e8e612de4565b509050806001600160a01b03168e6001600160a01b03161461198a57818361198d565b82825b90975095508a8710156119d15760405162461bcd60e51b815260040180806020018281038252602281526020018061331a6022913960400191505060405180910390fd5b89861015611a105760405162461bcd60e51b81526004018080602001828103825260228152602001806132f86022913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606109f67f000000000000000000000000000000000000000000000000000000000000000084846124f2565b60608142811015611ab8576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686866000198101818110611af257fe5b905060200201356001600160a01b03166001600160a01b031614611b59576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b611bb77f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506124f292505050565b91508682600184510381518110611bca57fe5b60200260200101511015610e775760405162461bcd60e51b815260040180806020018281038252602781526020018061338e6027913960400191505060405180910390fd5b6000808242811015611c56576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b611c85897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a6117dd565b9093509150611c95898685612ec2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611cfb57600080fd5b505af1158015611d0f573d6000803e3d6000fd5b50505050611d1d85836129cc565b50965096945050505050565b60008060008342811015611d72576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b611d808c8c8c8c8c8c612ac4565b90945092506000611db27f00000000000000000000000000000000000000000000000000000000000000008e8e612432565b9050611dc08d338388612629565b611dcc8c338387612629565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611e2457600080fd5b505af1158015611e38573d6000803e3d6000fd5b505050506040513d6020811015611e4e57600080fd5b5051949d939c50939a509198505050505050505050565b60608142811015611eab576040805162461bcd60e51b815260206004820152601460248201526000805160206133b5833981519152604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031686866000818110611ee257fe5b905060200201356001600160a01b03166001600160a01b031614611f49576040805162461bcd60e51b8152602060048201526019602482015278082e6e8e4c2a4deeae8cae47440929cac82989288bea082a89603b1b604482015290519081900360640190fd5b611fa77f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506122e592505050565b91503482600081518110611fb757fe5b60200260200101511115611ffc5760405162461bcd60e51b81526004018080602001828103825260238152602001806133fc6023913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db08360008151811061203857fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561206b57600080fd5b505af115801561207f573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb6120e47f0000000000000000000000000000000000000000000000000000000000000000898960008181106116d457fe5b846000815181106120f157fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561214857600080fd5b505af115801561215c573d6000803e3d6000fd5b505050506040513d602081101561217257600080fd5b505161217a57fe5b6121b982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250612786915050565b816000815181106121c657fe5b60200260200101513411156117c6576117c633836000815181106121e657fe5b602002602001015134036129cc565b60008084116122355760405162461bcd60e51b81526004018080602001828103825260278152602001806133d56027913960400191505060405180910390fd5b6000831180156122455750600082115b6122805760405162461bcd60e51b81526004018080602001828103825260248152602001806134a86024913960400191505060405180910390fd5b6000612294856103e563ffffffff61301616565b905060006122a8828563ffffffff61301616565b905060006122ce836122c2886103e863ffffffff61301616565b9063ffffffff61307916565b90508082816122d957fe5b04979650505050505050565b606060028251101561233e576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561235657600080fd5b50604051908082528060200260200182016040528015612380578160200160208202803683370190505b509050828160018351038151811061239457fe5b60209081029190910101528151600019015b801561242a576000806123e3878660018603815181106123c257fe5b60200260200101518786815181106123d657fe5b60200260200101516130c8565b915091506124058484815181106123f657fe5b60200260200101518383613196565b84600185038151811061241457fe5b60209081029190910101525050600019016123a6565b509392505050565b60008060006124418585612de4565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b606060028251101561254b576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561256357600080fd5b5060405190808252806020026020018201604052801561258d578160200160208202803683370190505b509050828160008151811061259e57fe5b60200260200101818152505060005b600183510381101561242a576000806125e3878685815181106125cc57fe5b60200260200101518786600101815181106123d657fe5b915091506126058484815181106125f657fe5b602002602001015183836121f5565b84846001018151811061261457fe5b602090810291909101015250506001016125ad565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106126ae5780518252601f19909201916020918201910161268f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612710576040519150601f19603f3d011682016040523d82523d6000602084013e612715565b606091505b5091509150818015612743575080511580612743575080806020019051602081101561274057600080fd5b50515b61277e5760405162461bcd60e51b815260040180806020018281038252603181526020018061335d6031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156129c6576000808483815181106127a457fe5b60200260200101518584600101815181106127bb57fe5b60200260200101519150915060006127d38383612de4565b50905060008785600101815181106127e757fe5b60200260200101519050600080836001600160a01b0316866001600160a01b03161461281557826000612819565b6000835b91509150600060028a510388106128305788612871565b6128717f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061286457fe5b6020026020010151612432565b905061289e7f00000000000000000000000000000000000000000000000000000000000000008888612432565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156128db576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561294c578181015183820152602001612934565b50505050905090810190601f1680156129795780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561299b57600080fd5b505af11580156129af573d6000803e3d6000fd5b505060019099019850612789975050505050505050565b50505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310612a185780518252601f1990920191602091820191016129f9565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612a7a576040519150601f19603f3d011682016040523d82523d6000602084013e612a7f565b606091505b5050905080612abf5760405162461bcd60e51b815260040180806020018281038252603481526020018061341f6034913960400191505060405180910390fd5b505050565b6040805163e6a4390560e01b81526001600160a01b03888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015612b3e57600080fd5b505afa158015612b52573d6000803e3d6000fd5b505050506040513d6020811015612b6857600080fd5b50516001600160a01b03161415612c1b57604080516364e329cb60e11b81526001600160a01b038a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b158015612bee57600080fd5b505af1158015612c02573d6000803e3d6000fd5b505050506040513d6020811015612c1857600080fd5b50505b600080612c497f00000000000000000000000000000000000000000000000000000000000000008b8b6130c8565b91509150816000148015612c5b575080155b15612c6b57879350869250612d2b565b6000612c78898484612d38565b9050878111612ccb5785811015612cc05760405162461bcd60e51b81526004018080602001828103825260228152602001806132f86022913960400191505060405180910390fd5b889450925082612d29565b6000612cd8898486612d38565b905089811115612ce457fe5b87811015612d235760405162461bcd60e51b815260040180806020018281038252602281526020018061331a6022913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000808411612d785760405162461bcd60e51b81526004018080602001828103825260218152602001806132d76021913960400191505060405180910390fd5b600083118015612d885750600082115b612dc35760405162461bcd60e51b81526004018080602001828103825260248152602001806134a86024913960400191505060405180910390fd5b82612dd4858463ffffffff61301616565b81612ddb57fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415612e385760405162461bcd60e51b815260040180806020018281038252602181526020018061333c6021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610612e58578284612e5b565b83835b90925090506001600160a01b038216612ebb576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310612f3f5780518252601f199092019160209182019101612f20565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612fa1576040519150601f19603f3d011682016040523d82523d6000602084013e612fa6565b606091505b5091509150818015612fd4575080511580612fd45750808060200190516020811015612fd157600080fd5b50515b61300f5760405162461bcd60e51b815260040180806020018281038252602d815260200180613453602d913960400191505060405180910390fd5b5050505050565b60008115806130315750508082028282828161302e57fe5b04145b6109f9576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b808201828110156109f9576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b60008060006130d78585612de4565b5090506000806130e8888888612432565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561312057600080fd5b505afa158015613134573d6000803e3d6000fd5b505050506040513d606081101561314a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614613184578082613187565b81815b90999098509650505050505050565b60008084116131d65760405162461bcd60e51b81526004018080602001828103825260288152602001806134806028913960400191505060405180910390fd5b6000831180156131e65750600082115b6132215760405162461bcd60e51b81526004018080602001828103825260248152602001806134a86024913960400191505060405180910390fd5b60006132456103e8613239868863ffffffff61301616565b9063ffffffff61301616565b9050600061325f6103e5613239868963ffffffff61328616565b905061327c600182848161326f57fe5b049063ffffffff61307916565b9695505050505050565b808203828111156109f9576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fdfe41737472614c6962726172793a20494e53554646494349454e545f414d4f554e544173747261526f757465723a20494e53554646494349454e545f425f414d4f554e544173747261526f757465723a20494e53554646494349454e545f415f414d4f554e5441737472614c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544173747261526f757465723a204558504952454400000000000000000000000041737472614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544173747261526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a736166655472616e73666572414d423a20414d42207472616e73666572206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c656441737472614c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5441737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459a2646970667358221220bfa04523c334c3627547c4fa89675283d138d3ebfd7e65557c5375348ca4c29864736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x118 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90793EA8 GT PUSH2 0xA0 JUMPI DUP1 PUSH4 0xD06CA61F GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xD06CA61F EQ PUSH2 0x730 JUMPI DUP1 PUSH4 0xE5DEE373 EQ PUSH2 0x7E5 JUMPI DUP1 PUSH4 0xE77BDFC5 EQ PUSH2 0x87B JUMPI DUP1 PUSH4 0xE8E33700 EQ PUSH2 0x8CE JUMPI DUP1 PUSH4 0xEF0DC4BE EQ PUSH2 0x930 JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x5D3 JUMPI DUP1 PUSH4 0xAC8EE3B6 EQ PUSH2 0x604 JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x688 JUMPI DUP1 PUSH4 0xBAA2ABDE EQ PUSH2 0x6BE JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x71B JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x40D2463F GT PUSH2 0xE7 JUMPI DUP1 PUSH4 0x40D2463F EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0x6EECCB89 EQ PUSH2 0x466 JUMPI DUP1 PUSH4 0x84B0B3A2 EQ PUSH2 0x4D9 JUMPI DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x53D JUMPI PUSH2 0x151 JUMP JUMPDEST DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x156 JUMPI DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x19E JUMPI DUP1 PUSH4 0x2195995C EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x33A JUMPI PUSH2 0x151 JUMP JUMPDEST CALLDATASIZE PUSH2 0x151 JUMPI CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x14F JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x162 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x9B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x9C9 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x277 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x160 DUP2 LT ISZERO PUSH2 0x2C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x120 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0x9FF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x346 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAF9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x42B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x44C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xCDD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x472 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0xF7C JUMP JUMPDEST PUSH2 0x51F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x4EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x1090 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x586 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1335 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E8 PUSH2 0x142E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x61A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x63B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x64D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x66E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1452 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x694 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x17D0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x6E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x17DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5E8 PUSH2 0x1A21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x753 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x774 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x786 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x7A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x1A45 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x808 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x82E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x861 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x321 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x89E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x1C0F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x51F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x8F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x1D29 JUMP JUMPDEST PUSH2 0x253 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x946 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x967 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x99A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1E65 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C1 DUP5 DUP5 DUP5 PUSH2 0x21F5 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9F6 PUSH32 0x0 DUP5 DUP5 PUSH2 0x22E5 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA2F PUSH32 0x0 DUP16 DUP16 PUSH2 0x2432 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0xA3E JUMPI DUP13 PUSH2 0xA42 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xACC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xADF DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x17DD JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP POP POP SWAP12 POP SWAP12 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xB3F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB9D PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x24F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xBB0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0xBF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x338E PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC93 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xC05 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0xC79 PUSH32 0x0 DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xC47 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xC64 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2432 JUMP JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC86 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2629 JUMP JUMPDEST PUSH2 0xCD2 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x2786 SWAP2 POP POP JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xD23 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0xD5D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xDC4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x82E6E8E4C2A4DEEAE8CAE47440929CAC82989288BEA082A89 PUSH1 0x3B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xE22 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x22E5 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xE32 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xE77 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x33FC PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE87 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xC05 JUMPI INVALID JUMPDEST PUSH2 0xEC6 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x2786 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xF05 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xCD2 DUP5 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xF6F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x29CC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xFCC PUSH32 0x0 DUP15 PUSH32 0x0 PUSH2 0x2432 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0xFDB JUMPI DUP13 PUSH2 0xFDF JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1055 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1069 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x107B DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0x1C0F JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x10D9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1107 DUP11 PUSH32 0x0 DUP12 CALLVALUE DUP13 DUP13 PUSH2 0x2AC4 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x1159 PUSH32 0x0 DUP13 PUSH32 0x0 PUSH2 0x2432 JUMP JUMPDEST SWAP1 POP PUSH2 0x1167 DUP12 CALLER DUP4 DUP9 PUSH2 0x2629 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11D6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP3 DUP7 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x125B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x126F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x128D JUMPI INVALID JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x130F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP CALLVALUE DUP5 LT ISZERO PUSH2 0x1327 JUMPI PUSH2 0x1327 CALLER DUP6 CALLVALUE SUB PUSH2 0x29CC JUMP JUMPDEST POP POP SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x137B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13D9 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x22E5 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x13E9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xBF5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x33FC PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1498 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x14CF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1536 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x82E6E8E4C2A4DEEAE8CAE47440929CAC82989288BEA082A89 PUSH1 0x3B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1594 PUSH32 0x0 CALLVALUE DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x24F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x15A7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x15EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x338E PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1628 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x165B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x166F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x16F1 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x16D4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xC64 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x16FE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1755 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1769 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x177F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1787 JUMPI INVALID JUMPDEST PUSH2 0x17C6 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x2786 SWAP2 POP POP JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9C1 DUP5 DUP5 DUP5 PUSH2 0x2D38 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1824 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1851 PUSH32 0x0 DUP13 DUP13 PUSH2 0x2432 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x18C0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x226BF2D1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 DUP7 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1923 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1937 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x194D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x1967 DUP15 DUP15 PUSH2 0x2DE4 JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x198A JUMPI DUP2 DUP4 PUSH2 0x198D JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP8 LT ISZERO PUSH2 0x19D1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x331A PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 DUP7 LT ISZERO PUSH2 0x1A10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32F8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x9F6 PUSH32 0x0 DUP5 DUP5 PUSH2 0x24F2 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1AB8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x1AF2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1B59 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x82E6E8E4C2A4DEEAE8CAE47440929CAC82989288BEA082A89 PUSH1 0x3B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1BB7 PUSH32 0x0 DUP10 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x24F2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1BCA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0xE77 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x338E PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1C56 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1C85 DUP10 PUSH32 0x0 DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x17DD JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x1C95 DUP10 DUP7 DUP6 PUSH2 0x2EC2 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x2E1A7D4D DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1CFB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D0F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1D1D DUP6 DUP4 PUSH2 0x29CC JUMP JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1D72 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1D80 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x2AC4 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH1 0x0 PUSH2 0x1DB2 PUSH32 0x0 DUP15 DUP15 PUSH2 0x2432 JUMP JUMPDEST SWAP1 POP PUSH2 0x1DC0 DUP14 CALLER DUP4 DUP9 PUSH2 0x2629 JUMP JUMPDEST PUSH2 0x1DCC DUP13 CALLER DUP4 DUP8 PUSH2 0x2629 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E4E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP14 SWAP4 SWAP13 POP SWAP4 SWAP11 POP SWAP2 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1EAB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x33B5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1EE2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1F49 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x82E6E8E4C2A4DEEAE8CAE47440929CAC82989288BEA082A89 PUSH1 0x3B SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1FA7 PUSH32 0x0 DUP9 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x22E5 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP CALLVALUE DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1FB7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x1FFC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x33FC PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2038 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x206B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x207F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB PUSH2 0x20E4 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x16D4 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x20F1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2148 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x215C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2172 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x217A JUMPI INVALID JUMPDEST PUSH2 0x21B9 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x2786 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x21C6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x17C6 JUMPI PUSH2 0x17C6 CALLER DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x21E6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x29CC JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x2235 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x33D5 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x2245 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x2280 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x34A8 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2294 DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0x3016 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x22A8 DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x3016 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x22CE DUP4 PUSH2 0x22C2 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x3016 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3079 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x22D9 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x233E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A20494E56414C49445F50415448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2380 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x2394 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH1 0x0 NOT ADD JUMPDEST DUP1 ISZERO PUSH2 0x242A JUMPI PUSH1 0x0 DUP1 PUSH2 0x23E3 DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0x23C2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x23D6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x30C8 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2405 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x23F6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3196 JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x2414 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x0 NOT ADD PUSH2 0x23A6 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2441 DUP6 DUP6 PUSH2 0x2DE4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x254B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A20494E56414C49445F50415448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2563 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x258D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x259E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x242A JUMPI PUSH1 0x0 DUP1 PUSH2 0x25E3 DUP8 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x25CC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x23D6 JUMPI INVALID JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2605 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x25F6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x21F5 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2614 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x25AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x26AE JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x268F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2710 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2715 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2743 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2743 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2740 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x277E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x335D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x29C6 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x27A4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x27BB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x27D3 DUP4 DUP4 PUSH2 0x2DE4 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP8 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x27E7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2815 JUMPI DUP3 PUSH1 0x0 PUSH2 0x2819 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP11 MLOAD SUB DUP9 LT PUSH2 0x2830 JUMPI DUP9 PUSH2 0x2871 JUMP JUMPDEST PUSH2 0x2871 PUSH32 0x0 DUP8 DUP13 DUP12 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2864 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2432 JUMP JUMPDEST SWAP1 POP PUSH2 0x289E PUSH32 0x0 DUP9 DUP9 PUSH2 0x2432 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x22C0D9F DUP5 DUP5 DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x28DB JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x294C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2934 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x2979 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x299B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x29AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP10 ADD SWAP9 POP PUSH2 0x2789 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2A18 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x29F9 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2A7A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A7F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2ABF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x341F PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6A43905 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 DUP4 SWAP3 PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xE6A43905 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2B3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2B52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2C1B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH4 0x64E329CB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD PUSH32 0x0 SWAP1 SWAP3 AND SWAP2 PUSH4 0xC9C65396 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2BEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2C02 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2C18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C49 PUSH32 0x0 DUP12 DUP12 PUSH2 0x30C8 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x2C5B JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x2C6B JUMPI DUP8 SWAP4 POP DUP7 SWAP3 POP PUSH2 0x2D2B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C78 DUP10 DUP5 DUP5 PUSH2 0x2D38 JUMP JUMPDEST SWAP1 POP DUP8 DUP2 GT PUSH2 0x2CCB JUMPI DUP6 DUP2 LT ISZERO PUSH2 0x2CC0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32F8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 SWAP5 POP SWAP3 POP DUP3 PUSH2 0x2D29 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CD8 DUP10 DUP5 DUP7 PUSH2 0x2D38 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 GT ISZERO PUSH2 0x2CE4 JUMPI INVALID JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x2D23 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x331A PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 POP DUP8 SWAP4 POP JUMPDEST POP JUMPDEST POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x2D78 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32D7 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x2D88 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x2DC3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x34A8 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x2DD4 DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3016 AND JUMP JUMPDEST DUP2 PUSH2 0x2DDB JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x2E38 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x333C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x2E58 JUMPI DUP3 DUP5 PUSH2 0x2E5B JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2EBB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2F3F JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2F20 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2FA1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2FA6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2FD4 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2FD4 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2FD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x300F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3453 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x3031 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x302E JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x9F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6D756C2D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x30D7 DUP6 DUP6 PUSH2 0x2DE4 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x30E8 DUP9 DUP9 DUP9 PUSH2 0x2432 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3134 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x314A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x3184 JUMPI DUP1 DUP3 PUSH2 0x3187 JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x31D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3480 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x31E6 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3221 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x34A8 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3245 PUSH2 0x3E8 PUSH2 0x3239 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x3016 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3016 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x325F PUSH2 0x3E5 PUSH2 0x3239 DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x3286 AND JUMP JUMPDEST SWAP1 POP PUSH2 0x327C PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0x326F JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3079 AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x9F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20494E53554646494349 GASLIMIT 0x4E SLOAD 0x5F TIMESTAMP 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20494E53554646494349 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C6564417374 PUSH19 0x61526F757465723A20494E5355464649434945 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20455850495245440000 STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20455843455353495645 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A3A7361666554 PUSH19 0x616E73666572414D423A20414D42207472616E PUSH20 0x666572206661696C65645472616E736665724865 PUSH13 0x7065723A3A736166655472616E PUSH20 0x6665723A207472616E73666572206661696C6564 COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF LOG0 GASLIMIT 0x23 0xC3 CALLVALUE 0xC3 PUSH3 0x7547C4 STATICCALL DUP10 PUSH8 0x5283D138D3EBFD7E PUSH6 0x557C5375348C LOG4 0xC2 SWAP9 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"263:14581:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;689:10;-1:-1:-1;;;;;703:4:4;689:18;;682:26;;;;263:14581;;12:1:-1;9;2:12;13882:240:4;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13882:240:4;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13882:240:4;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14611:231;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14611:231:4;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14611:231:4;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;14611:231:4;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;14611:231:4;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;14611:231:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14611:231:4;;-1:-1:-1;14611:231:4;;-1:-1:-1;;;;;14611:231:4:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14611:231:4;;;;;;;;;;;;;;;;;6143:883;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6143:883:4;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;6143:883:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;8811:677;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8811:677:4;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;8811:677:4;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;8811:677:4;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;8811:677:4;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;8811:677:4;;-1:-1:-1;8811:677:4;-1:-1:-1;;;;;;8811:677:4;;;;;;;;:::i;10961:872::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10961:872:4;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;10961:872:4;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;10961:872:4;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;10961:872:4;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10961:872:4;;-1:-1:-1;10961:872:4;-1:-1:-1;;;;;;10961:872:4;;;;;;;;:::i;7032:864::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7032:864:4;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;7032:864:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3372:1050::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;3372:1050:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;9494:655;;5:9:-1;2:2;;;27:1;24;17:12;2:2;9494:655:4;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;9494:655:4;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;9494:655:4;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;9494:655:4;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;9494:655:4;;-1:-1:-1;9494:655:4;-1:-1:-1;;;;;;9494:655:4;;;;;;;;:::i;357:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;357:38:4;;;:::i;:::-;;;;-1:-1:-1;;;;;357:38:4;;;;;;;;;;;;;;10155:800;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;10155:800:4;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;10155:800:4;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;10155:800:4;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10155:800:4;;-1:-1:-1;10155:800:4;-1:-1:-1;;;;;;10155:800:4;;;;;;;;:::i;13660:216::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13660:216:4;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13660:216:4;;;;;;;;;;;;:::i;4462:970::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4462:970:4;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;4462:970:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;310:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;310:41:4;;;:::i;14374:231::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14374:231:4;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;14374:231:4;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;14374:231:4;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;14374:231:4;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;14374:231:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14374:231:4;;-1:-1:-1;14374:231:4;;-1:-1:-1;;;;;14374:231:4:i;11839:894::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11839:894:4;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;11839:894:4;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;11839:894:4;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;11839:894:4;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11839:894:4;;-1:-1:-1;11839:894:4;-1:-1:-1;;;;;;11839:894:4;;;;;;;;:::i;5438:699::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5438:699:4;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;5438:699:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2471:895::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2471:895:4;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;2471:895:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12739:915::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;12739:915:4;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;12739:915:4;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12739:915:4;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12739:915:4;;-1:-1:-1;12739:915:4;-1:-1:-1;;;;;;12739:915:4;;;;;;;;:::i;13882:240::-;14021:17;14057:58;14083:8;14093:9;14104:10;14057:25;:58::i;:::-;14050:65;13882:240;-1:-1:-1;;;;13882:240:4:o;14611:231::-;14737:24;14784:51;14810:7;14819:9;14830:4;14784:25;:51::i;:::-;14777:58;;14611:231;;;;;:::o;6143:883::-;6468:15;6485;6512:12;6527:45;6548:7;6557:6;6565;6527:20;:45::i;:::-;6512:60;;6582:13;6598:10;:36;;6625:9;6598:36;;;-1:-1:-1;;6598:36:4;6644:170;;;-1:-1:-1;;;6644:170:4;;6681:10;6644:170;;;;6713:4;6644:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6582:52;;-1:-1:-1;;;;;;6644:23:4;;;;;:170;;;;;-1:-1:-1;;6644:170:4;;;;;;;;-1:-1:-1;6644:23:4;:170;;;2:2:-1;;;;27:1;24;17:12;2:2;6644:170:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6644:170:4;;;;6845:174;6874:6;6894;6914:9;6937:10;6961;6985:2;7001:8;6845:15;:174::i;:::-;6824:195;;;;;;;;6143:883;;;;;;;;;;;;;;;;:::o;8811:677::-;9030:24;9011:8;466:15;454:8;:27;;446:60;;;;;-1:-1:-1;;;446:60:4;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;446:60:4;;;;;;;;;;;;;;;9076:51:::1;9103:7;9112:8;9122:4;;9076:51;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9076:26:4::1;::::0;-1:-1:-1;;;9076:51:4:i:1;:::-;9066:61;;9189:12;9158:7;9183:1;9166:7;:14;:18;9158:27;;;;;;;;;;;;;;:43;;9137:129;;;;-1:-1:-1::0;;;9137:129:4::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9276:171;9321:4;;9326:1;9321:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;9321:7:4::1;9342:10;9366:47;9387:7;9396:4;;9401:1;9396:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;9396:7:4::1;9405:4;;9410:1;9405:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;9405:7:4::1;9366:20;:47::i;:::-;9427:7;9435:1;9427:10;;;;;;;;;;;;;;9276:31;:171::i;:::-;9457:24;9463:7;9472:4;;9457:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9478:2:4;;-1:-1:-1;9457:5:4::1;::::0;-1:-1:-1;;9457:24:4:i:1;:::-;8811:677:::0;;;;;;;;;:::o;10961:872::-;11177:24;11158:8;466:15;454:8;:27;;446:60;;;;;-1:-1:-1;;;446:60:4;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;446:60:4;;;;;;;;;;;;;;;-1:-1:-1;;;;;11246:4:4::1;11221:29;:4:::0;;-1:-1:-1;;11226:15:4;;11221:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;11221:21:4::1;-1:-1:-1::0;;;;;11221:29:4::1;;11213:67;;;::::0;;-1:-1:-1;;;11213:67:4;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;11213:67:4;;;;;;;;;;;;;::::1;;11300:51;11326:7;11335:9;11346:4;;11300:51;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11300:25:4::1;::::0;-1:-1:-1;;;11300:51:4:i:1;:::-;11290:61;;11396:11;11382:7;11390:1;11382:10;;;;;;;;;;;;;;:25;;11361:107;;;;-1:-1:-1::0;;;11361:107:4::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11478:171;11523:4;;11528:1;11523:7;;;;;;11478:171;11659:35;11665:7;11674:4;;11659:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11688:4:4::1;::::0;-1:-1:-1;11659:5:4::1;::::0;-1:-1:-1;;11659:35:4:i:1;:::-;11710:4;-1:-1:-1::0;;;;;11704:20:4::1;;11725:7;11750:1;11733:7;:14;:18;11725:27;;;;;;;;;;;;;;11704:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;11704:49:4;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;11704:49:4;;;;11763:63;11794:2;11798:7;11823:1;11806:7;:14;:18;11798:27;;;;;;;;;;;;;;11763:30;:63::i;7032:864::-:0;7341:19;7362:17;7391:12;7406:42;7427:7;7436:5;7443:4;7406:20;:42::i;:::-;7391:57;;7458:13;7474:10;:36;;7501:9;7474:36;;;-1:-1:-1;;7474:36:4;7520:170;;;-1:-1:-1;;;7520:170:4;;7557:10;7520:170;;;;7589:4;7520:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7458:52;;-1:-1:-1;;;;;;7520:23:4;;;;;:170;;;;;-1:-1:-1;;7520:170:4;;;;;;;;-1:-1:-1;7520:23:4;:170;;;2:2:-1;;;;27:1;24;17:12;2:2;7520:170:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7520:170:4;;;;7727:162;7759:5;7778:9;7801:14;7829:12;7855:2;7871:8;7727:18;:162::i;:::-;7700:189;;;;-1:-1:-1;7032:864:4;-1:-1:-1;;;;;;;;;;;;;7032:864:4:o;3372:1050::-;3675:19;3708:17;3739;3635:8;466:15;454:8;:27;;446:60;;;;;-1:-1:-1;;;446:60:4;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;446:60:4;;;;;;;;;;;;;;;3808:169:::1;3835:5;3854:4;3872:18;3904:9;3927:14;3955:12;3808:13;:169::i;:::-;3781:196:::0;;-1:-1:-1;3781:196:4;-1:-1:-1;3987:12:4::1;4002:42;4023:7;4032:5:::0;4039:4:::1;4002:20;:42::i;:::-;3987:57;;4054:69;4086:5;4093:10;4105:4;4111:11;4054:31;:69::i;:::-;4139:4;-1:-1:-1::0;;;;;4133:19:4::1;;4160:9;4133:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;4133:39:4;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4133:39:4;;;;;4195:4;-1:-1:-1::0;;;;;4189:20:4::1;;4210:4;4216:9;4189:37;;;;;;;;;;;;;-1:-1:-1::0;;;;;4189:37:4::1;-1:-1:-1::0;;;;;4189:37:4::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;4189:37:4;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4189:37:4;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4189:37:4;4182:45:::1;;;;4260:4;-1:-1:-1::0;;;;;4249:21:4::1;;4271:2;4249:25;;;;;;;;;;;;;-1:-1:-1::0;;;;;4249:25:4::1;-1:-1:-1::0;;;;;4249:25:4::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;4249:25:4;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4249:25:4;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4249:25:4;;-1:-1:-1;4288:9:4::1;:21:::0;-1:-1:-1;4284:104:4::1;;;4323:65;4354:10;4378:9;4366;:21;4323:30;:65::i;:::-;516:1;3372:1050:::0;;;;;;;;;;;:::o;9494:655::-;9713:24;9694:8;466:15;454:8;:27;;446:60;;;;;-1:-1:-1;;;446:60:4;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;446:60:4;;;;;;;;;;;;;;;9759:51:::1;9785:7;9794:9;9805:4;;9759:51;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;9759:25:4::1;::::0;-1:-1:-1;;;9759:51:4:i:1;:::-;9749:61;;9855:11;9841:7;9849:1;9841:10;;;;;;;;;;;;;;:25;;9820:107;;;;-1:-1:-1::0;;;9820:107:4::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;357:38:::0;;;:::o;10155:800::-;10393:24;10366:8;466:15;454:8;:27;;446:60;;;;;-1:-1:-1;;;446:60:4;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;446:60:4;;;;;;;;;;;;;;;10452:4:::1;-1:-1:-1::0;;;;;10441:15:4::1;:4;;10446:1;10441:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;10441:7:4::1;-1:-1:-1::0;;;;;10441:15:4::1;;10433:53;;;::::0;;-1:-1:-1;;;10433:53:4;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10433:53:4;;;;;;;;;;;;;::::1;;10506:52;10533:7;10542:9;10553:4;;10506:52;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;10506:26:4::1;::::0;-1:-1:-1;;;10506:52:4:i:1;:::-;10496:62;;10620:12;10589:7;10614:1;10597:7;:14;:18;10589:27;;;;;;;;;;;;;;:43;;10568:129;;;;-1:-1:-1::0;;;10568:129:4::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10713:4;-1:-1:-1::0;;;;;10707:19:4::1;;10734:7;10742:1;10734:10;;;;;;;;;;;;;;10707:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;10707:40:4;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;10707:40:4;;;;;10783:4;-1:-1:-1::0;;;;;10777:20:4::1;;10815:47;10836:7;10845:4;;10850:1;10845:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;10845:7:4::1;10854:4;;10859:1;10854:7;;;;;;10815:47;10880:7;10888:1;10880:10;;;;;;;;;;;;;;10777:127;;;;;;;;;;;;;-1:-1:-1::0;;;;;10777:127:4::1;-1:-1:-1::0;;;;;10777:127:4::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;10777:127:4;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;10777:127:4;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;10777:127:4;10757:157:::1;;;;10924:24;10930:7;10939:4;;10924:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;10945:2:4;;-1:-1:-1;10924:5:4::1;::::0;-1:-1:-1;;10924:24:4:i:1;:::-;10155:800:::0;;;;;;;;:::o;13660:216::-;13788:15;13822:47;13841:7;13850:8;13860;13822:18;:47::i;4462:970::-;4744:15;4761;4717:8;466:15;454:8;:27;;446:60;;;;;-1:-1:-1;;;446:60:4;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;446:60:4;;;;;;;;;;;;;;;4792:12:::1;4807:45;4828:7;4837:6;4845;4807:20;:45::i;:::-;4862:58;::::0;;-1:-1:-1;;;4862:58:4;;4892:10:::1;4862:58;::::0;::::1;::::0;-1:-1:-1;;;;;4862:29:4;::::1;:58:::0;;;;;;;;;;;;;;4792:60;;-1:-1:-1;4862:29:4;;::::1;::::0;:58;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;4862:29:4;:58;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4862:58:4;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4862:58:4;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;4993:25:4::1;::::0;;-1:-1:-1;;;4993:25:4;;-1:-1:-1;;;;;4993:25:4;;::::1;;::::0;::::1;::::0;;;4957:15:::1;::::0;;;4993:21;;::::1;::::0;::::1;::::0;:25;;;;;;;;;;;4957:15;4993:21;:25;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4993:25:4;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4993:25:4;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4993:25:4;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;4993:25:4;-1:-1:-1;5029:14:4::1;5049:39;5073:6:::0;5081;5049:23:::1;:39::i;:::-;5028:60;;;5129:6;-1:-1:-1::0;;;;;5119:16:4::1;:6;-1:-1:-1::0;;;;;5119:16:4::1;;:82;;5184:7;5193;5119:82;;;5151:7;5160;5119:82;5098:103:::0;;-1:-1:-1;5098:103:4;-1:-1:-1;5232:21:4;;::::1;;5211:102;;;;-1:-1:-1::0;;;5211:102:4::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5355:10;5344:7;:21;;5323:102;;;;-1:-1:-1::0;;;5323:102:4::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;516:1;;;;4462:970:::0;;;;;;;;;;;:::o;310:41::-;;;:::o;14374:231::-;14500:24;14547:51;14574:7;14583:8;14593:4;14547:26;:51::i;11839:894::-;12055:24;12036:8;466:15;454:8;:27;;446:60;;;;;-1:-1:-1;;;446:60:4;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;446:60:4;;;;;;;;;;;;;;;-1:-1:-1;;;;;12124:4:4::1;12099:29;:4:::0;;-1:-1:-1;;12104:15:4;;12099:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;12099:21:4::1;-1:-1:-1::0;;;;;12099:29:4::1;;12091:67;;;::::0;;-1:-1:-1;;;12091:67:4;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12091:67:4;;;;;;;;;;;;;::::1;;12178:51;12205:7;12214:8;12224:4;;12178:51;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;12178:26:4::1;::::0;-1:-1:-1;;;12178:51:4:i:1;:::-;12168:61;;12291:12;12260:7;12285:1;12268:7;:14;:18;12260:27;;;;;;;;;;;;;;:43;;12239:129;;;;-1:-1:-1::0;;;12239:129:4::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5438:699:::0;5704:19;5725:17;5677:8;466:15;454:8;:27;;446:60;;;;;-1:-1:-1;;;446:60:4;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;446:60:4;;;;;;;;;;;;;;;5785:188:::1;5814:5;5833:4;5851:9;5874:14;5902:12;5936:4;5955:8;5785:15;:188::i;:::-;5758:215:::0;;-1:-1:-1;5758:215:4;-1:-1:-1;5983:51:4::1;6011:5:::0;6018:2;5758:215;5983:27:::1;:51::i;:::-;6050:4;-1:-1:-1::0;;;;;6044:20:4::1;;6065:9;6044:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;6044:31:4;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;6044:31:4;;;;6085:45;6116:2;6120:9;6085:30;:45::i;:::-;5438:699:::0;;;;;;;;;;:::o;2471:895::-;2802:15;2831;2860:17;2762:8;466:15;454:8;:27;;446:60;;;;;-1:-1:-1;;;446:60:4;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;446:60:4;;;;;;;;;;;;;;;2923:167:::1;2950:6;2970;2990:14;3018;3046:10;3070;2923:13;:167::i;:::-;2902:188:::0;;-1:-1:-1;2902:188:4;-1:-1:-1;3100:12:4::1;3115:45;3136:7;3145:6:::0;3153;3115:20:::1;:45::i;:::-;3100:60;;3170:66;3202:6;3210:10;3222:4;3228:7;3170:31;:66::i;:::-;3246;3278:6;3286:10;3298:4;3304:7;3246:31;:66::i;:::-;3345:4;-1:-1:-1::0;;;;;3334:21:4::1;;3356:2;3334:25;;;;;;;;;;;;;-1:-1:-1::0;;;;;3334:25:4::1;-1:-1:-1::0;;;;;3334:25:4::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3334:25:4;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3334:25:4;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3334:25:4;2471:895;;;;-1:-1:-1;3334:25:4;;-1:-1:-1;2471:895:4;;-1:-1:-1;;;;;;;;;2471:895:4:o;12739:915::-;12974:24;12947:8;466:15;454:8;:27;;446:60;;;;;-1:-1:-1;;;446:60:4;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;446:60:4;;;;;;;;;;;;;;;13033:4:::1;-1:-1:-1::0;;;;;13022:15:4::1;:4;;13027:1;13022:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;13022:7:4::1;-1:-1:-1::0;;;;;13022:15:4::1;;13014:53;;;::::0;;-1:-1:-1;;;13014:53:4;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;13014:53:4;;;;;;;;;;;;;::::1;;13087:51;13113:7;13122:9;13133:4;;13087:51;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13087:25:4::1;::::0;-1:-1:-1;;;13087:51:4:i:1;:::-;13077:61;;13183:9;13169:7;13177:1;13169:10;;;;;;;;;;;;;;:23;;13148:105;;;;-1:-1:-1::0;;;13148:105:4::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13269:4;-1:-1:-1::0;;;;;13263:19:4::1;;13290:7;13298:1;13290:10;;;;;;;;;;;;;;13263:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;13263:40:4;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;13263:40:4;;;;;13339:4;-1:-1:-1::0;;;;;13333:20:4::1;;13371:47;13392:7;13401:4;;13406:1;13401:7;;;;;;13371:47;13436:7;13444:1;13436:10;;;;;;;;;;;;;;13333:127;;;;;;;;;;;;;-1:-1:-1::0;;;;;13333:127:4::1;-1:-1:-1::0;;;;;13333:127:4::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;13333:127:4;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;13333:127:4;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;13333:127:4;13313:157:::1;;;;13480:24;13486:7;13495:4;;13480:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13501:2:4;;-1:-1:-1;13480:5:4::1;::::0;-1:-1:-1;;13480:24:4:i:1;:::-;13530:7;13538:1;13530:10;;;;;;;;;;;;;;13518:9;:22;13514:106;;;13554:66;13585:10;13609:7;13617:1;13609:10;;;;;;;;;;;;;;13597:9;:22;13554:30;:66::i;2513:587:18:-:0;2645:17;2693:1;2682:8;:12;2674:64;;;;-1:-1:-1;;;2674:64:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2781:1;2769:9;:13;:31;;;;;2799:1;2786:10;:14;2769:31;2748:114;;;;-1:-1:-1;;;2748:114:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2872:23;2898:17;:8;2911:3;2898:17;:12;:17;:::i;:::-;2872:43;-1:-1:-1;2925:17:18;2945:31;2872:43;2965:10;2945:31;:19;:31;:::i;:::-;2925:51;-1:-1:-1;2986:19:18;3008:40;3032:15;3008:19;:9;3022:4;3008:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;2986:62;;3082:11;3070:9;:23;;;;;;;2513:587;-1:-1:-1;;;;;;;2513:587:18:o;4524:630::-;4658:24;4717:1;4702:4;:11;:16;;4694:55;;;;;-1:-1:-1;;;4694:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;4783:4;:11;4769:26;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4769:26:18;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4769:26:18;;4759:36;;4835:9;4805:7;4830:1;4813:7;:14;:18;4805:27;;;;;;;;;;;;;;;;;:39;4871:11;;-1:-1:-1;;4871:15:18;4854:294;4888:5;;4854:294;;4915:17;4934:18;4956:104;4985:7;5010:4;5019:1;5015;:5;5010:11;;;;;;;;;;;;;;5039:4;5044:1;5039:7;;;;;;;;;;;;;;4956:11;:104::i;:::-;4914:146;;;;5091:46;5103:7;5111:1;5103:10;;;;;;;;;;;;;;5115:9;5126:10;5091:11;:46::i;:::-;5074:7;5086:1;5082;:5;5074:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;4895:3:18;4854:294;;;;4524:630;;;;;:::o;738:633::-;857:12;882:14;898;916:26;927:6;935;916:10;:26::i;:::-;1154:32;;;-1:-1:-1;;1154:32:18;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1154:32:18;;;;;1144:43;;;;;;-1:-1:-1;;;;;;1036:286:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1036:286:18;;;;;;;1005:335;;;;;;;;;738:633;-1:-1:-1;;;;;738:633:18:o;3837:609::-;3971:24;4030:1;4015:4;:11;:16;;4007:55;;;;;-1:-1:-1;;;4007:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;4096:4;:11;4082:26;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4082:26:18;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4082:26:18;;4072:36;;4131:8;4118:7;4126:1;4118:10;;;;;;;;;;;;;:21;;;;;4154:9;4149:291;4183:1;4169:4;:11;:15;4165:1;:19;4149:291;;;4206:17;4225:18;4247:104;4276:7;4301:4;4306:1;4301:7;;;;;;;;;;;;;;4326:4;4331:1;4335;4331:5;4326:11;;;;;;;4247:104;4205:146;;;;4382:47;4395:7;4403:1;4395:10;;;;;;;;;;;;;;4407:9;4418:10;4382:12;:47::i;:::-;4365:7;4373:1;4377;4373:5;4365:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;4186:3:18;;4149:291;;1096:486:26;1360:51;;;-1:-1:-1;;;;;1360:51:26;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1360:51:26;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1349:63:26;;;;1314:12;;1328:17;;1349:10;;;;1360:51;1349:63;;;25:18:-1;1349:63:26;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1349:63:26;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1313:99:26;;;;1443:7;:57;;;;-1:-1:-1;1455:11:26;;:16;;:44;;;1486:4;1475:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1475:24:26;1455:44;1422:153;;;;-1:-1:-1;;;1422:153:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:486;;;;;;:::o;8003:802:4:-;8133:9;8128:671;8162:1;8148:4;:11;:15;8144:1;:19;8128:671;;;8185:13;8200:14;8219:4;8224:1;8219:7;;;;;;;;;;;;;;8228:4;8233:1;8237;8233:5;8228:11;;;;;;;;;;;;;;8184:56;;;;8255:14;8275:38;8299:5;8306:6;8275:23;:38::i;:::-;8254:59;;;8327:17;8347:7;8355:1;8359;8355:5;8347:14;;;;;;;;;;;;;;8327:34;;8376:18;8396;8427:6;-1:-1:-1;;;;;8418:15:4;:5;-1:-1:-1;;;;;8418:15:4;;:99;;8495:9;8514:1;8418:99;;;8461:1;8465:9;8418:99;8375:142;;;;8531:10;8562:1;8548:4;:11;:15;8544:1;:19;:110;;8651:3;8544:110;;;8582:50;8603:7;8612:6;8620:4;8625:1;8629;8625:5;8620:11;;;;;;;;;;;;;;8582:20;:50::i;:::-;8531:123;;8679:44;8700:7;8709:5;8716:6;8679:20;:44::i;:::-;-1:-1:-1;;;;;8668:78:4;;8747:10;8759;8771:2;8785:1;8775:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;8775:12:4;87:42:-1;143:17;;-1:-1;8775:12:4;;8668:120;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8668:120:4;-1:-1:-1;;;;;8668:120:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8668:120:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8668:120:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8165:3:4;;;;;-1:-1:-1;8128:671:4;;-1:-1:-1;;;;;;;;8128:671:4;;;8003:802;;;:::o;1588:214:26:-;1700:12;;;1660;1700;;;;;;;;;-1:-1:-1;;;;;1678:7:26;;;1693:5;;1678:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1678:35:26;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1659:54:26;;;1731:7;1723:72;;;;-1:-1:-1;;;1723:72:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:214;;;:::o;807:1658:4:-;1120:46;;;-1:-1:-1;;;1120:46:4;;-1:-1:-1;;;;;1120:46:4;;;;;;;;;;;;;;;;1021:15;;;;;;1134:7;1120:30;;;;;;:46;;;;;;;;;;;;;;;:30;:46;;;2:2:-1;;;;27:1;24;17:12;2:2;1120:46:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1120:46:4;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1120:46:4;-1:-1:-1;;;;;1120:60:4;;1116:140;;;1196:49;;;-1:-1:-1;;;1196:49:4;;-1:-1:-1;;;;;1196:49:4;;;;;;;;;;;;;;;;1210:7;1196:33;;;;;;:49;;;;;;;;;;;;;;;-1:-1:-1;1196:33:4;:49;;;2:2:-1;;;;27:1;24;17:12;2:2;1196:49:4;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1196:49:4;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;1116:140:4;1266:16;1284;1304:95;1342:7;1363:6;1383;1304:24;:95::i;:::-;1265:134;;;;1413:8;1425:1;1413:13;:30;;;;-1:-1:-1;1430:13:4;;1413:30;1409:1050;;;1481:14;;-1:-1:-1;1497:14:4;;-1:-1:-1;1409:1050:4;;;1543:22;1568:116;1604:14;1636:8;1662;1568:18;:116::i;:::-;1543:141;;1720:14;1702;:32;1698:751;;1801:10;1783:14;:28;;1754:133;;;;-1:-1:-1;;;1754:133:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1927:14;;-1:-1:-1;1943:14:4;-1:-1:-1;1943:14:4;1698:751;;;1997:22;2022:132;2062:14;2098:8;2128;2022:18;:132::i;:::-;1997:157;;2197:14;2179;:32;;2172:40;;;;2277:10;2259:14;:28;;2230:133;;;;-1:-1:-1;;;2230:133:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2403:14;-1:-1:-1;2419:14:4;;-1:-1:-1;1698:751:4;1409:1050;;807:1658;;;;;;;;;;;:::o;2009:385:18:-;2130:15;2175:1;2165:7;:11;2157:57;;;;-1:-1:-1;;;2157:57:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2256:1;2245:8;:12;:28;;;;;2272:1;2261:8;:12;2245:28;2224:111;;;;-1:-1:-1;;;2224:111:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2379:8;2355:21;:7;2367:8;2355:21;:11;:21;:::i;:::-;:32;;;;;;;2009:385;-1:-1:-1;;;;2009:385:18:o;260:389::-;359:14;375;423:6;-1:-1:-1;;;;;413:16:18;:6;-1:-1:-1;;;;;413:16:18;;;405:62;;;;-1:-1:-1;;;405:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:6;-1:-1:-1;;;;;496:15:18;:6;-1:-1:-1;;;;;496:15:18;;:77;;558:6;566;496:77;;;527:6;535;496:77;477:96;;-1:-1:-1;477:96:18;-1:-1:-1;;;;;;591:20:18;;583:59;;;;;-1:-1:-1;;;583:59:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;260:389;;;;;:::o;652:438:26:-;878:45;;;-1:-1:-1;;;;;878:45:26;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;878:45:26;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;867:57:26;;;;832:12;;846:17;;867:10;;;;878:45;867:57;;;25:18:-1;867:57:26;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;867:57:26;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;831:93:26;;;;955:7;:57;;;;-1:-1:-1;967:11:26;;:16;;:44;;;998:4;987:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;987:24:26;967:44;934:149;;;;-1:-1:-1;;;934:149:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:438;;;;;:::o;419:140:25:-;471:6;497;;;:30;;-1:-1:-1;;512:5:25;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;-1:-1:-1;;;489:63:25;;;;;;;;;;;;-1:-1:-1;;;489:63:25;;;;;;;;;;;;;;154:126;237:5;;;232:16;;;;224:49;;;;;-1:-1:-1;;;224:49:25;;;;;;;;;;;;-1:-1:-1;;;224:49:25;;;;;;;;;;;;;;1426:473:18;1549:16;1567;1596:14;1616:26;1627:6;1635;1616:10;:26::i;:::-;1595:47;;;1653:16;1671;1717:32;1725:7;1734:6;1742;1717:7;:32::i;:::-;-1:-1:-1;;;;;1693:78:18;;:80;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1693:80:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1693:80:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1693:80:18;;;;;;;1652:121;;;;;-1:-1:-1;1652:121:18;;-1:-1:-1;;;;;;1806:16:18;;;;;;;:86;;1873:8;1883;1806:86;;;1838:8;1848;1806:86;1783:109;;;;-1:-1:-1;1426:473:18;-1:-1:-1;;;;;;;1426:473:18:o;3218:540::-;3350:16;3398:1;3386:9;:13;3378:66;;;;-1:-1:-1;;;3378:66:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3487:1;3475:9;:13;:31;;;;;3505:1;3492:10;:14;3475:31;3454:114;;;;-1:-1:-1;;;3454:114:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3578:17;3598:34;3627:4;3598:24;:9;3612;3598:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;3578:54;-1:-1:-1;3642:19:18;3664:34;3694:3;3664:25;:10;3679:9;3664:25;:14;:25;:::i;:34::-;3642:56;;3719:32;3749:1;3732:11;3720:9;:23;;;;;;;3719:32;:29;:32;:::i;:::-;3708:43;3218:540;-1:-1:-1;;;;;;3218:540:18:o;286:127:25:-;369:5;;;364:16;;;;356:50;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;;"},"methodIdentifiers":{"SAMB()":"90793ea8","addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)":"e8e33700","addLiquidityAMB(address,uint256,uint256,uint256,address,uint256)":"84b0b3a2","factory()":"c45a0155","getAmountIn(uint256,uint256,uint256)":"85f8c259","getAmountOut(uint256,uint256,uint256)":"054d50d4","getAmountsIn(uint256,address[])":"1f00ca74","getAmountsOut(uint256,address[])":"d06ca61f","quote(uint256,uint256,uint256)":"ad615dec","removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)":"baa2abde","removeLiquidityAMB(address,uint256,uint256,uint256,address,uint256)":"e77bdfc5","removeLiquidityAMBWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"6eeccb89","removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"2195995c","swapAMBForExactTokens(uint256,address[],address,uint256)":"ef0dc4be","swapExactAMBForTokens(uint256,address[],address,uint256)":"ac8ee3b6","swapExactTokensForAMB(uint256,uint256,address[],address,uint256)":"e5dee373","swapExactTokensForTokens(uint256,uint256,address[],address,uint256)":"38ed1739","swapTokensForExactAMB(uint256,uint256,address[],address,uint256)":"40d2463f","swapTokensForExactTokens(uint256,uint256,address[],address,uint256)":"8803dbee"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_SAMB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityAMB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAMB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityAMBWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapAMBForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAMBForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAMB\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactAMB\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/AstraRouter01.sol\":\"AstraRouter01\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraFactory.sol\":{\"keccak256\":\"0x1d8cfacb873119cce028428fbfc6741a17f9dff23726b6f9262be38b04d2147d\",\"urls\":[\"bzz-raw://8161eaf5b9b22d8d7bb774f33dd0465b3796decc507f6509d02800052b6da351\",\"dweb:/ipfs/QmWhWSfZqWbx9iBRsV2PB2oEGcV7tgp8TthHH6ZYbN2JCP\"]},\"contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"contracts/periphery/AstraRouter01.sol\":{\"keccak256\":\"0xa7d8878e5516e15c6b0aba7ba131de97857385d6242fb27eb1e8346f40b03d5c\",\"urls\":[\"bzz-raw://e502a2ae7989adb743c1352527a43037227c47f385d1676c3395bbd667231b13\",\"dweb:/ipfs/QmYHYcBAhoxJHS54DLGBq81h4nWrYgLCnKbAJxcNULzQqV\"]},\"contracts/periphery/interfaces/IAstraRouter01.sol\":{\"keccak256\":\"0x41f94bb4b263f1a0a17e4ca169a7057ecc6d9ff5f575c9047a57e062f7680708\",\"urls\":[\"bzz-raw://d5e155912a41505ccd8702dabc77193fb0bb0601cc0b3efc447aefa98b3a9699\",\"dweb:/ipfs/Qmaev2znL8F5UWbiZJMe124SATkzmrQz4kB5uEeBKyU5iZ\"]},\"contracts/periphery/interfaces/IERC20.sol\":{\"keccak256\":\"0x61db17aebc5d812c7002d15c1da954065e56abe49d64b14c034abe5604d70eb3\",\"urls\":[\"bzz-raw://b006685e753f9120469f10b09c159f222d4cb8b507a6c1f0c14ed50c883ebe66\",\"dweb:/ipfs/QmSyY7iTugbczPwfGK67etiyPULenYGzzRYbt8aabwwkUb\"]},\"contracts/periphery/interfaces/ISAMB.sol\":{\"keccak256\":\"0xaa6bcbe5a4eda8bed6cb5c2779b1607bfb5e2aa026729ab120e59ec3c93d65c1\",\"urls\":[\"bzz-raw://6741ee95b1b38a1fd9b541eaadebbf81ffa7787049d00ebe410d2126964e3cb2\",\"dweb:/ipfs/QmSchE668jWboooBDstjTNMKuk8f6wgVQWibhXBTTsGDsF\"]},\"contracts/periphery/libraries/AstraLibrary.sol\":{\"keccak256\":\"0xae44fd35f2a3c3498de7cbc39ec1f34ac497d62bfa993d07795ae3bc124b2b31\",\"urls\":[\"bzz-raw://637a1e7bb00c545f7ba83851539379085fe791497a5b36cff1dee4a34e0056d9\",\"dweb:/ipfs/QmaFeUq9bYst2tN6zfTNqGW48kACsvXaofZvKtQP4DTqWh\"]},\"contracts/periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1\",\"urls\":[\"bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c\",\"dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg\"]},\"contracts/periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0x91888c39fcda3d21089c867d943b013f02165203b62e6925b898e5652df313e0\",\"urls\":[\"bzz-raw://ef6af53c706fd1e4a3f5b974bf46f5b811cad331126802f466a56e53b32757a7\",\"dweb:/ipfs/QmdWuxHaLq1wyFgTo5aBBAEcqE2XqGwi249rr8NsTY9qsu\"]}},\"version\":1}"}},"contracts/periphery/AstraRouter02.sol":{"AstraRouter02":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_SAMB","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityAMB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAMB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityAMB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAMB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityAMBSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountAMB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityAMBWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAMB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityAMBWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountAMB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapAMBForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactAMBForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactAMBForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForAMB","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForAMBSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactAMB","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405260405161418b38038061418b8339818101604052604081101561002657600080fd5b508051602090910151600080546001600160a01b039384166001600160a01b0319918216179091556001805493909216921691909117905561411e8061006d6000396000f3fe60806040526004361061014f5760003560e01c806390793ea8116100b6578063cf7958671161006f578063cf79586714610982578063d06ca61f146109f5578063e5dee37314610aaa578063e77bdfc514610b40578063e8e3370014610b93578063ef0dc4be14610bf55761016a565b806390793ea8146107a1578063ac8ee3b6146107d2578063ad615dec14610856578063baa2abde1461088c578063c1c222df146108e9578063c45a01551461096d5761016a565b80635c11d795116101085780635c11d795146104d25780636eeccb89146105685780638402322d146105db57806384b0b3a21461067157806385f8c259146106d55780638803dbee1461070b5761016a565b8063054d50d41461016f5780631e0bcdae146101b75780631f00ca741461020a5780632195995c1461030f57806338ed1739146103a657806340d2463f1461043c5761016a565b3661016a576001546001600160a01b0316331461016857fe5b005b600080fd5b34801561017b57600080fd5b506101a56004803603606081101561019257600080fd5b5080359060208101359060400135610c79565b60408051918252519081900360200190f35b3480156101c357600080fd5b506101a5600480360360c08110156101da57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610c8e565b34801561021657600080fd5b506102bf6004803603604081101561022d57600080fd5b81359190810190604081016020820135600160201b81111561024e57600080fd5b82018360208201111561026057600080fd5b803590602001918460208302840111600160201b8311171561028157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610dee945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102fb5781810151838201526020016102e3565b505050509050019250505060405180910390f35b34801561031b57600080fd5b5061038d600480360361016081101561033357600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135610e11565b6040805192835260208301919091528051918290030190f35b3480156103b257600080fd5b506102bf600480360360a08110156103c957600080fd5b813591602081013591810190606081016040820135600160201b8111156103ef57600080fd5b82018360208201111561040157600080fd5b803590602001918460208302840111600160201b8311171561042257600080fd5b91935091506001600160a01b038135169060200135610ef7565b34801561044857600080fd5b506102bf600480360360a081101561045f57600080fd5b813591602081013591810190606081016040820135600160201b81111561048557600080fd5b82018360208201111561049757600080fd5b803590602001918460208302840111600160201b831117156104b857600080fd5b91935091506001600160a01b0381351690602001356110b0565b3480156104de57600080fd5b50610168600480360360a08110156104f557600080fd5b813591602081013591810190606081016040820135600160201b81111561051b57600080fd5b82018360208201111561052d57600080fd5b803590602001918460208302840111600160201b8311171561054e57600080fd5b91935091506001600160a01b0381351690602001356112f7565b34801561057457600080fd5b5061038d600480360361014081101561058c57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611580565b3480156105e757600080fd5b50610168600480360360a08110156105fe57600080fd5b813591602081013591810190606081016040820135600160201b81111561062457600080fd5b82018360208201111561063657600080fd5b803590602001918460208302840111600160201b8311171561065757600080fd5b91935091506001600160a01b03813516906020013561167d565b6106b7600480360360c081101561068757600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a001356118ab565b60408051938452602084019290925282820152519081900360600190f35b3480156106e157600080fd5b506101a5600480360360608110156106f857600080fd5b5080359060208101359060400135611ada565b34801561071757600080fd5b506102bf600480360360a081101561072e57600080fd5b813591602081013591810190606081016040820135600160201b81111561075457600080fd5b82018360208201111561076657600080fd5b803590602001918460208302840111600160201b8311171561078757600080fd5b91935091506001600160a01b038135169060200135611ae7565b3480156107ad57600080fd5b506107b6611bcc565b604080516001600160a01b039092168252519081900360200190f35b6102bf600480360360808110156107e857600080fd5b81359190810190604081016020820135600160201b81111561080957600080fd5b82018360208201111561081b57600080fd5b803590602001918460208302840111600160201b8311171561083c57600080fd5b91935091506001600160a01b038135169060200135611bdb565b34801561086257600080fd5b506101a56004803603606081101561087957600080fd5b5080359060208101359060400135611eac565b34801561089857600080fd5b5061038d600480360360e08110156108af57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135611eb9565b610168600480360360808110156108ff57600080fd5b81359190810190604081016020820135600160201b81111561092057600080fd5b82018360208201111561093257600080fd5b803590602001918460208302840111600160201b8311171561095357600080fd5b91935091506001600160a01b0381351690602001356120e8565b34801561097957600080fd5b506107b6612408565b34801561098e57600080fd5b506101a560048036036101408110156109a657600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135612417565b348015610a0157600080fd5b506102bf60048036036040811015610a1857600080fd5b81359190810190604081016020820135600160201b811115610a3957600080fd5b820183602082011115610a4b57600080fd5b803590602001918460208302840111600160201b83111715610a6c57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506124f8945050505050565b348015610ab657600080fd5b506102bf600480360360a0811015610acd57600080fd5b813591602081013591810190606081016040820135600160201b811115610af357600080fd5b820183602082011115610b0557600080fd5b803590602001918460208302840111600160201b83111715610b2657600080fd5b91935091506001600160a01b038135169060200135612512565b348015610b4c57600080fd5b5061038d600480360360c0811015610b6357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561266f565b348015610b9f57600080fd5b506106b76004803603610100811015610bb757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e0013561275d565b6102bf60048036036080811015610c0b57600080fd5b81359190810190604081016020820135600160201b811115610c2c57600080fd5b820183602082011115610c3e57600080fd5b803590602001918460208302840111600160201b83111715610c5f57600080fd5b91935091506001600160a01b038135169060200135612886565b6000610c86848484612b86565b949350505050565b60008142811015610cd4576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b600154610cf09089906001600160a01b03168989893089611eb9565b604080516370a0823160e01b81523060048201529051919450610d7492508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610d4357600080fd5b505afa158015610d57573d6000803e3d6000fd5b505050506040513d6020811015610d6d57600080fd5b5051612c76565b60015460408051632e1a7d4d60e01b81526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015610dc157600080fd5b505af1158015610dd5573d6000803e3d6000fd5b50505050610de38483612dca565b509695505050505050565b600054606090610e08906001600160a01b03168484612ec2565b90505b92915050565b6000805481908190610e2d906001600160a01b03168f8f61300f565b9050600087610e3c578c610e40565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610eb657600080fd5b505af1158015610eca573d6000803e3d6000fd5b50505050610edd8f8f8f8f8f8f8f611eb9565b809450819550505050509b509b9950505050505050505050565b60608142811015610f3d576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252610f87936001600160a01b0316928c92918b918b918291908501908490808284376000920191909152506130cf92505050565b91508682600184510381518110610f9a57fe5b60200260200101511015610fdf5760405162461bcd60e51b8152600401808060200182810382526027815260200180613f8b6027913960400191505060405180910390fd5b61107186866000818110610fef57fe5b905060200201356001600160a01b0316336110576000809054906101000a90046001600160a01b03168a8a600081811061102557fe5b905060200201356001600160a01b03168b8b600181811061104257fe5b905060200201356001600160a01b031661300f565b8560008151811061106457fe5b6020026020010151613206565b610de382878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613363915050565b606081428110156110f6576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546001600160a01b03168686600019810181811061111257fe5b905060200201356001600160a01b03166001600160a01b03161461116b576040805162461bcd60e51b8152602060048201526019602482015260008051602061407d833981519152604482015290519081900360640190fd5b60005460408051602080890282810182019093528882526111b5936001600160a01b0316928c92918b918b91829190850190849080828437600092019190915250612ec292505050565b915086826000815181106111c557fe5b6020026020010151111561120a5760405162461bcd60e51b8152600401808060200182810382526023815260200180613ff96023913960400191505060405180910390fd5b61121a86866000818110610fef57fe5b61125982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613363915050565b60015482516001600160a01b0390911690632e1a7d4d908490600019810190811061128057fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156112be57600080fd5b505af11580156112d2573d6000803e3d6000fd5b50505050610de384836001855103815181106112ea57fe5b6020026020010151612dca565b804281101561133b576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6113a48585600081811061134b57fe5b905060200201356001600160a01b03163361139e6000809054906101000a90046001600160a01b03168989600081811061138157fe5b905060200201356001600160a01b03168a8a600181811061104257fe5b8a613206565b6000858560001981018181106113b657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561141b57600080fd5b505afa15801561142f573d6000803e3d6000fd5b505050506040513d602081101561144557600080fd5b50516040805160208881028281018201909352888252929350611487929091899189918291850190849080828437600092019190915250889250613586915050565b86611539828888600019810181811061149c57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561150157600080fd5b505afa158015611515573d6000803e3d6000fd5b505050506040513d602081101561152b57600080fd5b50519063ffffffff61386e16565b10156115765760405162461bcd60e51b8152600401808060200182810382526027815260200180613f8b6027913960400191505060405180910390fd5b5050505050505050565b60008060006115b96000809054906101000a90046001600160a01b03168e600160009054906101000a90046001600160a01b031661300f565b90506000876115c8578c6115cc565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561164257600080fd5b505af1158015611656573d6000803e3d6000fd5b505050506116688e8e8e8e8e8e61266f565b909f909e509c50505050505050505050505050565b80428110156116c1576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546001600160a01b0316858560001981018181106116dd57fe5b905060200201356001600160a01b03166001600160a01b031614611736576040805162461bcd60e51b8152602060048201526019602482015260008051602061407d833981519152604482015290519081900360640190fd5b6117468585600081811061134b57fe5b611784858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613586915050565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156117cf57600080fd5b505afa1580156117e3573d6000803e3d6000fd5b505050506040513d60208110156117f957600080fd5b505190508681101561183c5760405162461bcd60e51b8152600401808060200182810382526027815260200180613f8b6027913960400191505060405180910390fd5b60015460408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561188957600080fd5b505af115801561189d573d6000803e3d6000fd5b505050506115768482612dca565b600080600083428110156118f4576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b60015461190f908b906001600160a01b03168b348c8c6138be565b6000805460015493975091955091611935916001600160a01b03908116918e911661300f565b90506119438b338388613206565b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561199357600080fd5b505af11580156119a7573d6000803e3d6000fd5b50506001546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018b9052915191909216945063a9059cbb9350604480830193506020928290030181600087803b158015611a0057600080fd5b505af1158015611a14573d6000803e3d6000fd5b505050506040513d6020811015611a2a57600080fd5b5051611a3257fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611a8a57600080fd5b505af1158015611a9e573d6000803e3d6000fd5b505050506040513d6020811015611ab457600080fd5b5051925034841015611acc57611acc33853403612dca565b505096509650969350505050565b6000610c86848484613ae0565b60608142811015611b2d576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252611b77936001600160a01b0316928c92918b918b91829190850190849080828437600092019190915250612ec292505050565b91508682600081518110611b8757fe5b60200260200101511115610fdf5760405162461bcd60e51b8152600401808060200182810382526023815260200180613ff96023913960400191505060405180910390fd5b6001546001600160a01b031681565b60608142811015611c21576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546001600160a01b03168686600081611c3857fe5b905060200201356001600160a01b03166001600160a01b031614611c91576040805162461bcd60e51b8152602060048201526019602482015260008051602061407d833981519152604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252611cdb936001600160a01b0316923492918b918b918291908501908490808284376000920191909152506130cf92505050565b91508682600184510381518110611cee57fe5b60200260200101511015611d335760405162461bcd60e51b8152600401808060200182810382526027815260200180613f8b6027913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db0908490600090611d5557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d8857600080fd5b505af1158015611d9c573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb9450611dcd9350909116908a908a908161138157fe5b84600081518110611dda57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611e3157600080fd5b505af1158015611e45573d6000803e3d6000fd5b505050506040513d6020811015611e5b57600080fd5b5051611e6357fe5b611ea282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613363915050565b5095945050505050565b6000610c86848484613bd0565b6000808242811015611f00576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b60008054611f18906001600160a01b03168c8c61300f565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015611f7357600080fd5b505af1158015611f87573d6000803e3d6000fd5b505050506040513d6020811015611f9d57600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015611fea57600080fd5b505af1158015611ffe573d6000803e3d6000fd5b505050506040513d604081101561201457600080fd5b5080516020909101519092509050600061202e8e8e613c7c565b509050806001600160a01b03168e6001600160a01b031614612051578183612054565b82825b90975095508a8710156120985760405162461bcd60e51b8152600401808060200182810382526022815260200180613f176022913960400191505060405180910390fd5b898610156120d75760405162461bcd60e51b8152600401808060200182810382526022815260200180613ef56022913960400191505060405180910390fd5b505050505097509795505050505050565b804281101561212c576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546001600160a01b0316858560008161214357fe5b905060200201356001600160a01b03166001600160a01b03161461219c576040805162461bcd60e51b8152602060048201526019602482015260008051602061407d833981519152604482015290519081900360640190fd5b60015460408051630d0e30db60e41b8152905134926001600160a01b03169163d0e30db091849160048082019260009290919082900301818588803b1580156121e457600080fd5b505af11580156121f8573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb94506122299350909116908a908a908161138157fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561227957600080fd5b505af115801561228d573d6000803e3d6000fd5b505050506040513d60208110156122a357600080fd5b50516122ab57fe5b6000868660001981018181106122bd57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561232257600080fd5b505afa158015612336573d6000803e3d6000fd5b505050506040513d602081101561234c57600080fd5b5051604080516020898102828101820190935289825292935061238e9290918a918a918291850190849080828437600092019190915250899250613586915050565b8761153982898960001981018181106123a357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561150157600080fd5b6000546001600160a01b031681565b600080546001548291612438916001600160a01b03918216918f911661300f565b9050600086612447578b61244b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156124c157600080fd5b505af11580156124d5573d6000803e3d6000fd5b505050506124e78d8d8d8d8d8d610c8e565b9d9c50505050505050505050505050565b600054606090610e08906001600160a01b031684846130cf565b60608142811015612558576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546001600160a01b03168686600019810181811061257457fe5b905060200201356001600160a01b03166001600160a01b0316146125cd576040805162461bcd60e51b8152602060048201526019602482015260008051602061407d833981519152604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252612617936001600160a01b0316928c92918b918b918291908501908490808284376000920191909152506130cf92505050565b9150868260018451038151811061262a57fe5b6020026020010151101561120a5760405162461bcd60e51b8152600401808060200182810382526027815260200180613f8b6027913960400191505060405180910390fd5b60008082428110156126b6576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546126d2908a906001600160a01b03168a8a8a308a611eb9565b90935091506126e2898685612c76565b60015460408051632e1a7d4d60e01b81526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561272f57600080fd5b505af1158015612743573d6000803e3d6000fd5b505050506127518583612dca565b50965096945050505050565b600080600083428110156127a6576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6127b48c8c8c8c8c8c6138be565b60008054929650909450906127d3906001600160a01b03168e8e61300f565b90506127e18d338388613206565b6127ed8c338387613206565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561284557600080fd5b505af1158015612859573d6000803e3d6000fd5b505050506040513d602081101561286f57600080fd5b5051949d939c50939a509198505050505050505050565b606081428110156128cc576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546001600160a01b031686866000816128e357fe5b905060200201356001600160a01b03166001600160a01b03161461293c576040805162461bcd60e51b8152602060048201526019602482015260008051602061407d833981519152604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252612986936001600160a01b0316928b92918b918b91829190850190849080828437600092019190915250612ec292505050565b9150348260008151811061299657fe5b602002602001015111156129db5760405162461bcd60e51b8152600401808060200182810382526023815260200180613ff96023913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db09084906000906129fd57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a3057600080fd5b505af1158015612a44573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb9450612a759350909116908a908a908161138157fe5b84600081518110612a8257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612ad957600080fd5b505af1158015612aed573d6000803e3d6000fd5b505050506040513d6020811015612b0357600080fd5b5051612b0b57fe5b612b4a82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613363915050565b81600081518110612b5757fe5b6020026020010151341115611ea257611ea23383600081518110612b7757fe5b60200260200101513403612dca565b6000808411612bc65760405162461bcd60e51b8152600401808060200182810382526027815260200180613fd26027913960400191505060405180910390fd5b600083118015612bd65750600082115b612c115760405162461bcd60e51b81526004018080602001828103825260248152602001806140c56024913960400191505060405180910390fd5b6000612c25856103e563ffffffff613d5a16565b90506000612c39828563ffffffff613d5a16565b90506000612c5f83612c53886103e863ffffffff613d5a16565b9063ffffffff613dbd16565b9050808281612c6a57fe5b04979650505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310612cf35780518252601f199092019160209182019101612cd4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612d55576040519150601f19603f3d011682016040523d82523d6000602084013e612d5a565b606091505b5091509150818015612d88575080511580612d885750808060200190516020811015612d8557600080fd5b50515b612dc35760405162461bcd60e51b815260040180806020018281038252602d815260200180614050602d913960400191505060405180910390fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310612e165780518252601f199092019160209182019101612df7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612e78576040519150601f19603f3d011682016040523d82523d6000602084013e612e7d565b606091505b5050905080612ebd5760405162461bcd60e51b815260040180806020018281038252603481526020018061401c6034913960400191505060405180910390fd5b505050565b6060600282511015612f1b576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff81118015612f3357600080fd5b50604051908082528060200260200182016040528015612f5d578160200160208202803683370190505b5090508281600183510381518110612f7157fe5b60209081029190910101528151600019015b801561300757600080612fc087866001860381518110612f9f57fe5b6020026020010151878681518110612fb357fe5b6020026020010151613e0c565b91509150612fe2848481518110612fd357fe5b60200260200101518383613ae0565b846001850381518110612ff157fe5b6020908102919091010152505060001901612f83565b509392505050565b600080600061301e8585613c7c565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6060600282511015613128576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561314057600080fd5b5060405190808252806020026020018201604052801561316a578160200160208202803683370190505b509050828160008151811061317b57fe5b60200260200101818152505060005b6001835103811015613007576000806131c0878685815181106131a957fe5b6020026020010151878660010181518110612fb357fe5b915091506131e28484815181106131d357fe5b60200260200101518383612b86565b8484600101815181106131f157fe5b6020908102919091010152505060010161318a565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061328b5780518252601f19909201916020918201910161326c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146132ed576040519150601f19603f3d011682016040523d82523d6000602084013e6132f2565b606091505b5091509150818015613320575080511580613320575080806020019051602081101561331d57600080fd5b50515b61335b5760405162461bcd60e51b8152600401808060200182810382526031815260200180613f5a6031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156135805760008084838151811061338157fe5b602002602001015185846001018151811061339857fe5b60200260200101519150915060006133b08383613c7c565b50905060008785600101815181106133c457fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146133f2578260006133f6565b6000835b91509150600060028a5103881061340d578861343e565b6000548a5161343e916001600160a01b03169088908d9060028d0190811061343157fe5b602002602001015161300f565b600054909150613458906001600160a01b0316888861300f565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015613495576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156135065781810151838201526020016134ee565b50505050905090810190601f1680156135335780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561355557600080fd5b505af1158015613569573d6000803e3d6000fd5b505060019099019850613366975050505050505050565b50505050565b60005b6001835103811015612ebd576000808483815181106135a457fe5b60200260200101518584600101815181106135bb57fe5b60200260200101519150915060006135d38383613c7c565b5060008054919250906135f0906001600160a01b0316858561300f565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561363157600080fd5b505afa158015613645573d6000803e3d6000fd5b505050506040513d606081101561365b57600080fd5b5080516020909101516001600160701b0391821693501690506000806001600160a01b038a811690891614613691578284613694565b83835b915091506136f2828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561150157600080fd5b95506136ff868383612b86565b945050505050600080856001600160a01b0316886001600160a01b0316146137295782600061372d565b6000835b91509150600060028c51038a10613744578a613768565b6000548c51613768916001600160a01b0316908a908f9060028f0190811061343157fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b838110156137f25781810151838201526020016137da565b50505050905090810190601f16801561381f5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561384157600080fd5b505af1158015613855573d6000803e3d6000fd5b50506001909b019a506135899950505050505050505050565b80820382811115610e0b576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b600080546040805163e6a4390560e01b81526001600160a01b038a811660048301528981166024830152915184938493169163e6a43905916044808301926020929190829003018186803b15801561391557600080fd5b505afa158015613929573d6000803e3d6000fd5b505050506040513d602081101561393f57600080fd5b50516001600160a01b031614156139d75760008054604080516364e329cb60e11b81526001600160a01b038c811660048301528b811660248301529151919092169263c9c6539692604480820193602093909283900390910190829087803b1580156139aa57600080fd5b505af11580156139be573d6000803e3d6000fd5b505050506040513d60208110156139d457600080fd5b50505b6000805481906139f1906001600160a01b03168b8b613e0c565b91509150816000148015613a03575080155b15613a1357879350869250613ad3565b6000613a20898484613bd0565b9050878111613a735785811015613a685760405162461bcd60e51b8152600401808060200182810382526022815260200180613ef56022913960400191505060405180910390fd5b889450925082613ad1565b6000613a80898486613bd0565b905089811115613a8c57fe5b87811015613acb5760405162461bcd60e51b8152600401808060200182810382526022815260200180613f176022913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000808411613b205760405162461bcd60e51b815260040180806020018281038252602881526020018061409d6028913960400191505060405180910390fd5b600083118015613b305750600082115b613b6b5760405162461bcd60e51b81526004018080602001828103825260248152602001806140c56024913960400191505060405180910390fd5b6000613b8f6103e8613b83868863ffffffff613d5a16565b9063ffffffff613d5a16565b90506000613ba96103e5613b83868963ffffffff61386e16565b9050613bc66001828481613bb957fe5b049063ffffffff613dbd16565b9695505050505050565b6000808411613c105760405162461bcd60e51b8152600401808060200182810382526021815260200180613ed46021913960400191505060405180910390fd5b600083118015613c205750600082115b613c5b5760405162461bcd60e51b81526004018080602001828103825260248152602001806140c56024913960400191505060405180910390fd5b82613c6c858463ffffffff613d5a16565b81613c7357fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613cd05760405162461bcd60e51b8152600401808060200182810382526021815260200180613f396021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613cf0578284613cf3565b83835b90925090506001600160a01b038216613d53576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b6000811580613d7557505080820282828281613d7257fe5b04145b610e0b576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015610e0b576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b6000806000613e1b8585613c7c565b509050600080613e2c88888861300f565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613e6457600080fd5b505afa158015613e78573d6000803e3d6000fd5b505050506040513d6060811015613e8e57600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b0387811690841614613ec1578082613ec4565b81815b9099909850965050505050505056fe41737472614c6962726172793a20494e53554646494349454e545f414d4f554e544173747261526f757465723a20494e53554646494349454e545f425f414d4f554e544173747261526f757465723a20494e53554646494349454e545f415f414d4f554e5441737472614c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544173747261526f757465723a204558504952454400000000000000000000000041737472614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544173747261526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a736166655472616e73666572414d423a20414d42207472616e73666572206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644173747261526f757465723a20494e56414c49445f504154480000000000000041737472614c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5441737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459a264697066735822122084105bf8a7870bda1fb0942f3c2861ae3de9c185d1e171081c4ffc17582d77a764736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x418B CODESIZE SUB DUP1 PUSH2 0x418B DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP4 SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x411E DUP1 PUSH2 0x6D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90793EA8 GT PUSH2 0xB6 JUMPI DUP1 PUSH4 0xCF795867 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xCF795867 EQ PUSH2 0x982 JUMPI DUP1 PUSH4 0xD06CA61F EQ PUSH2 0x9F5 JUMPI DUP1 PUSH4 0xE5DEE373 EQ PUSH2 0xAAA JUMPI DUP1 PUSH4 0xE77BDFC5 EQ PUSH2 0xB40 JUMPI DUP1 PUSH4 0xE8E33700 EQ PUSH2 0xB93 JUMPI DUP1 PUSH4 0xEF0DC4BE EQ PUSH2 0xBF5 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x7A1 JUMPI DUP1 PUSH4 0xAC8EE3B6 EQ PUSH2 0x7D2 JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x856 JUMPI DUP1 PUSH4 0xBAA2ABDE EQ PUSH2 0x88C JUMPI DUP1 PUSH4 0xC1C222DF EQ PUSH2 0x8E9 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x96D JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x5C11D795 GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x5C11D795 EQ PUSH2 0x4D2 JUMPI DUP1 PUSH4 0x6EECCB89 EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x8402322D EQ PUSH2 0x5DB JUMPI DUP1 PUSH4 0x84B0B3A2 EQ PUSH2 0x671 JUMPI DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x6D5 JUMPI DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x70B JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x1E0BCDAE EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x2195995C EQ PUSH2 0x30F JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x3A6 JUMPI DUP1 PUSH4 0x40D2463F EQ PUSH2 0x43C JUMPI PUSH2 0x16A JUMP JUMPDEST CALLDATASIZE PUSH2 0x16A JUMPI PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x168 JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xC79 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0xC8E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xDEE SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2FB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x160 DUP2 LT ISZERO PUSH2 0x333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x120 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0xE11 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xEF7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x45F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x10B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x12F7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x1580 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x636 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x167D JUMP JUMPDEST PUSH2 0x6B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x687 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x18AB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1ADA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x717 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x72E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x766 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x787 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7B6 PUSH2 0x1BCC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x81B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x83C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1BDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x879 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1EAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x8AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1EB9 JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x8FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x20E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7B6 PUSH2 0x2408 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x98E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x9A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x2417 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xA6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x24F8 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xAF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2512 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xB63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x266F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xBB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x275D JUMP JUMPDEST PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xC0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2886 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC86 DUP5 DUP5 DUP5 PUSH2 0x2B86 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xCD4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0xCF0 SWAP1 DUP10 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP10 DUP10 ADDRESS DUP10 PUSH2 0x1EB9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xD74 SWAP3 POP DUP11 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2C76 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x2E1A7D4D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xDE3 DUP5 DUP4 PUSH2 0x2DCA JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH2 0xE08 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH2 0xE2D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP16 DUP16 PUSH2 0x300F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0xE3C JUMPI DUP13 PUSH2 0xE40 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xECA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xEDD DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x1EB9 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP POP POP SWAP12 POP SWAP12 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xF3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE PUSH2 0xF87 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP13 SWAP3 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x30CF SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xF9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0xFDF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F8B PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1071 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xFEF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0x1057 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1025 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x1042 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x300F JUMP JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1064 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3206 JUMP JUMPDEST PUSH2 0xDE3 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3363 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x10F6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x1112 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x116B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x407D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE PUSH2 0x11B5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP13 SWAP3 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2EC2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x11C5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x120A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF9 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x121A DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xFEF JUMPI INVALID JUMPDEST PUSH2 0x1259 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x3363 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 DUP5 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x1280 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xDE3 DUP5 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x12EA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2DCA JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x133B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13A4 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x134B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0x139E PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1381 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x1042 JUMPI INVALID JUMPDEST DUP11 PUSH2 0x3206 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x13B6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x141B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x142F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP9 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x1487 SWAP3 SWAP1 SWAP2 DUP10 SWAP2 DUP10 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP PUSH2 0x3586 SWAP2 POP POP JUMP JUMPDEST DUP7 PUSH2 0x1539 DUP3 DUP9 DUP9 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x149C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1515 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x152B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x386E AND JUMP JUMPDEST LT ISZERO PUSH2 0x1576 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F8B PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x15B9 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x300F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x15C8 JUMPI DUP13 PUSH2 0x15CC JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1642 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1656 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1668 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0x266F JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x16C1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x16DD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1736 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x407D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1746 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x134B JUMPI INVALID JUMPDEST PUSH2 0x1784 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x3586 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP7 DUP2 LT ISZERO PUSH2 0x183C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F8B PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x2E1A7D4D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1889 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x189D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1576 DUP5 DUP3 PUSH2 0x2DCA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x18F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x190F SWAP1 DUP12 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 CALLVALUE DUP13 DUP13 PUSH2 0x38BE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD SWAP4 SWAP8 POP SWAP2 SWAP6 POP SWAP2 PUSH2 0x1935 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP15 SWAP2 AND PUSH2 0x300F JUMP JUMPDEST SWAP1 POP PUSH2 0x1943 DUP12 CALLER DUP4 DUP9 PUSH2 0x3206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1993 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP12 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP5 POP PUSH4 0xA9059CBB SWAP4 POP PUSH1 0x44 DUP1 DUP4 ADD SWAP4 POP PUSH1 0x20 SWAP3 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1A32 JUMPI INVALID JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP CALLVALUE DUP5 LT ISZERO PUSH2 0x1ACC JUMPI PUSH2 0x1ACC CALLER DUP6 CALLVALUE SUB PUSH2 0x2DCA JUMP JUMPDEST POP POP SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC86 DUP5 DUP5 DUP5 PUSH2 0x3AE0 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1B2D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE PUSH2 0x1B77 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP13 SWAP3 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2EC2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1B87 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xFDF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF9 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1C21 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 DUP2 PUSH2 0x1C38 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1C91 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x407D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE PUSH2 0x1CDB SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 CALLVALUE SWAP3 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x30CF SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1CEE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x1D33 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F8B PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0E30DB0 SWAP1 DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x1D55 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D9C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP6 POP PUSH4 0xA9059CBB SWAP5 POP PUSH2 0x1DCD SWAP4 POP SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP2 PUSH2 0x1381 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1DDA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1E63 JUMPI INVALID JUMPDEST PUSH2 0x1EA2 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3363 SWAP2 POP POP JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC86 DUP5 DUP5 DUP5 PUSH2 0x3BD0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1F00 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x1F18 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 DUP13 PUSH2 0x300F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x226BF2D1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 DUP7 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2014 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x202E DUP15 DUP15 PUSH2 0x3C7C JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2051 JUMPI DUP2 DUP4 PUSH2 0x2054 JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP8 LT ISZERO PUSH2 0x2098 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F17 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 DUP7 LT ISZERO PUSH2 0x20D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3EF5 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x212C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x0 DUP2 PUSH2 0x2143 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x219C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x407D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD0E30DB PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD CALLVALUE SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xD0E30DB0 SWAP2 DUP5 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP6 POP PUSH4 0xA9059CBB SWAP5 POP PUSH2 0x2229 SWAP4 POP SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP2 PUSH2 0x1381 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x228D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x22AB JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x22BD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2336 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x234C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP10 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP10 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x238E SWAP3 SWAP1 SWAP2 DUP11 SWAP2 DUP11 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3586 SWAP2 POP POP JUMP JUMPDEST DUP8 PUSH2 0x1539 DUP3 DUP10 DUP10 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x23A3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD DUP3 SWAP2 PUSH2 0x2438 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 DUP16 SWAP2 AND PUSH2 0x300F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x2447 JUMPI DUP12 PUSH2 0x244B JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x24E7 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0xC8E JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH2 0xE08 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x30CF JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2558 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x2574 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x25CD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x407D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE PUSH2 0x2617 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP13 SWAP3 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x30CF SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x262A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x120A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F8B PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x26B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x26D2 SWAP1 DUP11 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x1EB9 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x26E2 DUP10 DUP7 DUP6 PUSH2 0x2C76 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x2E1A7D4D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x272F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2743 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x2751 DUP6 DUP4 PUSH2 0x2DCA JUMP JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x27A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x27B4 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x38BE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 PUSH2 0x27D3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 DUP15 PUSH2 0x300F JUMP JUMPDEST SWAP1 POP PUSH2 0x27E1 DUP14 CALLER DUP4 DUP9 PUSH2 0x3206 JUMP JUMPDEST PUSH2 0x27ED DUP13 CALLER DUP4 DUP8 PUSH2 0x3206 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2845 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2859 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x286F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP14 SWAP4 SWAP13 POP SWAP4 SWAP11 POP SWAP2 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x28CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 DUP2 PUSH2 0x28E3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x293C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x407D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE PUSH2 0x2986 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP12 SWAP3 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2EC2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP CALLVALUE DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2996 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x29DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF9 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0E30DB0 SWAP1 DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x29FD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A44 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP6 POP PUSH4 0xA9059CBB SWAP5 POP PUSH2 0x2A75 SWAP4 POP SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP2 PUSH2 0x1381 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2A82 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2B0B JUMPI INVALID JUMPDEST PUSH2 0x2B4A DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3363 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B57 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x1EA2 JUMPI PUSH2 0x1EA2 CALLER DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B77 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x2DCA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x2BC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FD2 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x2BD6 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x2C11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40C5 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2C25 DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0x3D5A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C39 DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x3D5A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C5F DUP4 PUSH2 0x2C53 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x3D5A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3DBD AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x2C6A JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2CF3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2CD4 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2D55 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D5A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2D88 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2D88 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x2DC3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4050 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2E16 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2DF7 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2E78 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2E7D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2EBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x401C PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x2F1B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A20494E56414C49445F50415448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2F33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2F5D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x2F71 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH1 0x0 NOT ADD JUMPDEST DUP1 ISZERO PUSH2 0x3007 JUMPI PUSH1 0x0 DUP1 PUSH2 0x2FC0 DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0x2F9F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x2FB3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3E0C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2FE2 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2FD3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3AE0 JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x2FF1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x0 NOT ADD PUSH2 0x2F83 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x301E DUP6 DUP6 PUSH2 0x3C7C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x3128 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A20494E56414C49445F50415448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x316A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x317B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3007 JUMPI PUSH1 0x0 DUP1 PUSH2 0x31C0 DUP8 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x31A9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2FB3 JUMPI INVALID JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x31E2 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x31D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x2B86 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x31F1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x318A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x328B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x326C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x32ED JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x32F2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3320 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3320 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x331D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x335B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F5A PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3580 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3381 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3398 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x33B0 DUP4 DUP4 PUSH2 0x3C7C JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP8 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x33C4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x33F2 JUMPI DUP3 PUSH1 0x0 PUSH2 0x33F6 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP11 MLOAD SUB DUP9 LT PUSH2 0x340D JUMPI DUP9 PUSH2 0x343E JUMP JUMPDEST PUSH1 0x0 SLOAD DUP11 MLOAD PUSH2 0x343E SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP9 SWAP1 DUP14 SWAP1 PUSH1 0x2 DUP14 ADD SWAP1 DUP2 LT PUSH2 0x3431 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x300F JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP PUSH2 0x3458 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH2 0x300F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x22C0D9F DUP5 DUP5 DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3495 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3506 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x34EE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3533 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3569 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP10 ADD SWAP9 POP PUSH2 0x3366 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x2EBD JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x35A4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x35BB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x35D3 DUP4 DUP4 PUSH2 0x3C7C JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x35F0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH2 0x300F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3645 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x365B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP10 AND EQ PUSH2 0x3691 JUMPI DUP3 DUP5 PUSH2 0x3694 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x36F2 DUP3 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 POP PUSH2 0x36FF DUP7 DUP4 DUP4 PUSH2 0x2B86 JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3729 JUMPI DUP3 PUSH1 0x0 PUSH2 0x372D JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP13 MLOAD SUB DUP11 LT PUSH2 0x3744 JUMPI DUP11 PUSH2 0x3768 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP13 MLOAD PUSH2 0x3768 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP11 SWAP1 DUP16 SWAP1 PUSH1 0x2 DUP16 ADD SWAP1 DUP2 LT PUSH2 0x3431 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH4 0x22C0D9F PUSH1 0xE0 SHL DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP8 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xA4 DUP7 ADD DUP2 SWAP1 MSTORE SWAP7 SWAP8 POP SWAP1 DUP13 AND SWAP6 PUSH4 0x22C0D9F SWAP6 DUP11 SWAP6 DUP11 SWAP6 DUP11 SWAP6 SWAP2 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 PUSH1 0xC4 DUP7 ADD SWAP3 SWAP1 SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x37F2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37DA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x381F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3855 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP12 ADD SWAP11 POP PUSH2 0x3589 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xE0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6A43905 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xE6A43905 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3929 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x393F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x39D7 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x64E329CB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0xC9C65396 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 PUSH1 0x20 SWAP4 SWAP1 SWAP3 DUP4 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x39BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x39F1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 PUSH2 0x3E0C JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x3A03 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x3A13 JUMPI DUP8 SWAP4 POP DUP7 SWAP3 POP PUSH2 0x3AD3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A20 DUP10 DUP5 DUP5 PUSH2 0x3BD0 JUMP JUMPDEST SWAP1 POP DUP8 DUP2 GT PUSH2 0x3A73 JUMPI DUP6 DUP2 LT ISZERO PUSH2 0x3A68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3EF5 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 SWAP5 POP SWAP3 POP DUP3 PUSH2 0x3AD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A80 DUP10 DUP5 DUP7 PUSH2 0x3BD0 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 GT ISZERO PUSH2 0x3A8C JUMPI INVALID JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x3ACB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F17 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 POP DUP8 SWAP4 POP JUMPDEST POP JUMPDEST POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3B20 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x409D PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3B30 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3B6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40C5 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B8F PUSH2 0x3E8 PUSH2 0x3B83 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x3D5A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3D5A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3BA9 PUSH2 0x3E5 PUSH2 0x3B83 DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x386E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3BC6 PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0x3BB9 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3DBD AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3C10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3ED4 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3C20 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3C5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40C5 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x3C6C DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3D5A AND JUMP JUMPDEST DUP2 PUSH2 0x3C73 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3CD0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F39 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x3CF0 JUMPI DUP3 DUP5 PUSH2 0x3CF3 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3D53 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x3D75 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x3D72 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xE0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6D756C2D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xE0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3E1B DUP6 DUP6 PUSH2 0x3C7C JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x3E2C DUP9 DUP9 DUP9 PUSH2 0x300F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3E8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x3EC1 JUMPI DUP1 DUP3 PUSH2 0x3EC4 JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP INVALID COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20494E53554646494349 GASLIMIT 0x4E SLOAD 0x5F TIMESTAMP 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20494E53554646494349 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C6564417374 PUSH19 0x61526F757465723A20494E5355464649434945 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20455850495245440000 STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20455843455353495645 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A3A7361666554 PUSH19 0x616E73666572414D423A20414D42207472616E PUSH20 0x666572206661696C65645472616E736665724865 PUSH13 0x7065723A3A736166655472616E PUSH20 0x6665723A207472616E73666572206661696C6564 COINBASE PUSH20 0x747261526F757465723A20494E56414C49445F50 COINBASE SLOAD 0x48 STOP STOP STOP STOP STOP STOP STOP COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 LT JUMPDEST 0xF8 0xA7 DUP8 SIGNEXTEND 0xDA 0x1F 0xB0 SWAP5 0x2F EXTCODECOPY 0x28 PUSH2 0xAE3D 0xE9 0xC1 DUP6 0xD1 0xE1 PUSH18 0x81C4FFC17582D77A764736F6C6343000606 STOP CALLER ","sourceMap":"298:20949:5:-:0;;;577:117;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;577:117:5;;;;;;;647:7;:18;;-1:-1:-1;;;;;647:18:5;;;-1:-1:-1;;;;;;647:18:5;;;;;;;;675:12;;;;;;;;;;;;;;298:20949;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061014f5760003560e01c806390793ea8116100b6578063cf7958671161006f578063cf79586714610982578063d06ca61f146109f5578063e5dee37314610aaa578063e77bdfc514610b40578063e8e3370014610b93578063ef0dc4be14610bf55761016a565b806390793ea8146107a1578063ac8ee3b6146107d2578063ad615dec14610856578063baa2abde1461088c578063c1c222df146108e9578063c45a01551461096d5761016a565b80635c11d795116101085780635c11d795146104d25780636eeccb89146105685780638402322d146105db57806384b0b3a21461067157806385f8c259146106d55780638803dbee1461070b5761016a565b8063054d50d41461016f5780631e0bcdae146101b75780631f00ca741461020a5780632195995c1461030f57806338ed1739146103a657806340d2463f1461043c5761016a565b3661016a576001546001600160a01b0316331461016857fe5b005b600080fd5b34801561017b57600080fd5b506101a56004803603606081101561019257600080fd5b5080359060208101359060400135610c79565b60408051918252519081900360200190f35b3480156101c357600080fd5b506101a5600480360360c08110156101da57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a00135610c8e565b34801561021657600080fd5b506102bf6004803603604081101561022d57600080fd5b81359190810190604081016020820135600160201b81111561024e57600080fd5b82018360208201111561026057600080fd5b803590602001918460208302840111600160201b8311171561028157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610dee945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102fb5781810151838201526020016102e3565b505050509050019250505060405180910390f35b34801561031b57600080fd5b5061038d600480360361016081101561033357600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135610e11565b6040805192835260208301919091528051918290030190f35b3480156103b257600080fd5b506102bf600480360360a08110156103c957600080fd5b813591602081013591810190606081016040820135600160201b8111156103ef57600080fd5b82018360208201111561040157600080fd5b803590602001918460208302840111600160201b8311171561042257600080fd5b91935091506001600160a01b038135169060200135610ef7565b34801561044857600080fd5b506102bf600480360360a081101561045f57600080fd5b813591602081013591810190606081016040820135600160201b81111561048557600080fd5b82018360208201111561049757600080fd5b803590602001918460208302840111600160201b831117156104b857600080fd5b91935091506001600160a01b0381351690602001356110b0565b3480156104de57600080fd5b50610168600480360360a08110156104f557600080fd5b813591602081013591810190606081016040820135600160201b81111561051b57600080fd5b82018360208201111561052d57600080fd5b803590602001918460208302840111600160201b8311171561054e57600080fd5b91935091506001600160a01b0381351690602001356112f7565b34801561057457600080fd5b5061038d600480360361014081101561058c57600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611580565b3480156105e757600080fd5b50610168600480360360a08110156105fe57600080fd5b813591602081013591810190606081016040820135600160201b81111561062457600080fd5b82018360208201111561063657600080fd5b803590602001918460208302840111600160201b8311171561065757600080fd5b91935091506001600160a01b03813516906020013561167d565b6106b7600480360360c081101561068757600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a001356118ab565b60408051938452602084019290925282820152519081900360600190f35b3480156106e157600080fd5b506101a5600480360360608110156106f857600080fd5b5080359060208101359060400135611ada565b34801561071757600080fd5b506102bf600480360360a081101561072e57600080fd5b813591602081013591810190606081016040820135600160201b81111561075457600080fd5b82018360208201111561076657600080fd5b803590602001918460208302840111600160201b8311171561078757600080fd5b91935091506001600160a01b038135169060200135611ae7565b3480156107ad57600080fd5b506107b6611bcc565b604080516001600160a01b039092168252519081900360200190f35b6102bf600480360360808110156107e857600080fd5b81359190810190604081016020820135600160201b81111561080957600080fd5b82018360208201111561081b57600080fd5b803590602001918460208302840111600160201b8311171561083c57600080fd5b91935091506001600160a01b038135169060200135611bdb565b34801561086257600080fd5b506101a56004803603606081101561087957600080fd5b5080359060208101359060400135611eac565b34801561089857600080fd5b5061038d600480360360e08110156108af57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135611eb9565b610168600480360360808110156108ff57600080fd5b81359190810190604081016020820135600160201b81111561092057600080fd5b82018360208201111561093257600080fd5b803590602001918460208302840111600160201b8311171561095357600080fd5b91935091506001600160a01b0381351690602001356120e8565b34801561097957600080fd5b506107b6612408565b34801561098e57600080fd5b506101a560048036036101408110156109a657600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135612417565b348015610a0157600080fd5b506102bf60048036036040811015610a1857600080fd5b81359190810190604081016020820135600160201b811115610a3957600080fd5b820183602082011115610a4b57600080fd5b803590602001918460208302840111600160201b83111715610a6c57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506124f8945050505050565b348015610ab657600080fd5b506102bf600480360360a0811015610acd57600080fd5b813591602081013591810190606081016040820135600160201b811115610af357600080fd5b820183602082011115610b0557600080fd5b803590602001918460208302840111600160201b83111715610b2657600080fd5b91935091506001600160a01b038135169060200135612512565b348015610b4c57600080fd5b5061038d600480360360c0811015610b6357600080fd5b506001600160a01b0381358116916020810135916040820135916060810135916080820135169060a0013561266f565b348015610b9f57600080fd5b506106b76004803603610100811015610bb757600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e0013561275d565b6102bf60048036036080811015610c0b57600080fd5b81359190810190604081016020820135600160201b811115610c2c57600080fd5b820183602082011115610c3e57600080fd5b803590602001918460208302840111600160201b83111715610c5f57600080fd5b91935091506001600160a01b038135169060200135612886565b6000610c86848484612b86565b949350505050565b60008142811015610cd4576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b600154610cf09089906001600160a01b03168989893089611eb9565b604080516370a0823160e01b81523060048201529051919450610d7492508a9187916001600160a01b038416916370a0823191602480820192602092909190829003018186803b158015610d4357600080fd5b505afa158015610d57573d6000803e3d6000fd5b505050506040513d6020811015610d6d57600080fd5b5051612c76565b60015460408051632e1a7d4d60e01b81526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b158015610dc157600080fd5b505af1158015610dd5573d6000803e3d6000fd5b50505050610de38483612dca565b509695505050505050565b600054606090610e08906001600160a01b03168484612ec2565b90505b92915050565b6000805481908190610e2d906001600160a01b03168f8f61300f565b9050600087610e3c578c610e40565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b158015610eb657600080fd5b505af1158015610eca573d6000803e3d6000fd5b50505050610edd8f8f8f8f8f8f8f611eb9565b809450819550505050509b509b9950505050505050505050565b60608142811015610f3d576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252610f87936001600160a01b0316928c92918b918b918291908501908490808284376000920191909152506130cf92505050565b91508682600184510381518110610f9a57fe5b60200260200101511015610fdf5760405162461bcd60e51b8152600401808060200182810382526027815260200180613f8b6027913960400191505060405180910390fd5b61107186866000818110610fef57fe5b905060200201356001600160a01b0316336110576000809054906101000a90046001600160a01b03168a8a600081811061102557fe5b905060200201356001600160a01b03168b8b600181811061104257fe5b905060200201356001600160a01b031661300f565b8560008151811061106457fe5b6020026020010151613206565b610de382878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613363915050565b606081428110156110f6576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546001600160a01b03168686600019810181811061111257fe5b905060200201356001600160a01b03166001600160a01b03161461116b576040805162461bcd60e51b8152602060048201526019602482015260008051602061407d833981519152604482015290519081900360640190fd5b60005460408051602080890282810182019093528882526111b5936001600160a01b0316928c92918b918b91829190850190849080828437600092019190915250612ec292505050565b915086826000815181106111c557fe5b6020026020010151111561120a5760405162461bcd60e51b8152600401808060200182810382526023815260200180613ff96023913960400191505060405180910390fd5b61121a86866000818110610fef57fe5b61125982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613363915050565b60015482516001600160a01b0390911690632e1a7d4d908490600019810190811061128057fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156112be57600080fd5b505af11580156112d2573d6000803e3d6000fd5b50505050610de384836001855103815181106112ea57fe5b6020026020010151612dca565b804281101561133b576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6113a48585600081811061134b57fe5b905060200201356001600160a01b03163361139e6000809054906101000a90046001600160a01b03168989600081811061138157fe5b905060200201356001600160a01b03168a8a600181811061104257fe5b8a613206565b6000858560001981018181106113b657fe5b905060200201356001600160a01b03166001600160a01b03166370a08231856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561141b57600080fd5b505afa15801561142f573d6000803e3d6000fd5b505050506040513d602081101561144557600080fd5b50516040805160208881028281018201909352888252929350611487929091899189918291850190849080828437600092019190915250889250613586915050565b86611539828888600019810181811061149c57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561150157600080fd5b505afa158015611515573d6000803e3d6000fd5b505050506040513d602081101561152b57600080fd5b50519063ffffffff61386e16565b10156115765760405162461bcd60e51b8152600401808060200182810382526027815260200180613f8b6027913960400191505060405180910390fd5b5050505050505050565b60008060006115b96000809054906101000a90046001600160a01b03168e600160009054906101000a90046001600160a01b031661300f565b90506000876115c8578c6115cc565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c4810188905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b15801561164257600080fd5b505af1158015611656573d6000803e3d6000fd5b505050506116688e8e8e8e8e8e61266f565b909f909e509c50505050505050505050505050565b80428110156116c1576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546001600160a01b0316858560001981018181106116dd57fe5b905060200201356001600160a01b03166001600160a01b031614611736576040805162461bcd60e51b8152602060048201526019602482015260008051602061407d833981519152604482015290519081900360640190fd5b6117468585600081811061134b57fe5b611784858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613586915050565b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156117cf57600080fd5b505afa1580156117e3573d6000803e3d6000fd5b505050506040513d60208110156117f957600080fd5b505190508681101561183c5760405162461bcd60e51b8152600401808060200182810382526027815260200180613f8b6027913960400191505060405180910390fd5b60015460408051632e1a7d4d60e01b81526004810184905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561188957600080fd5b505af115801561189d573d6000803e3d6000fd5b505050506115768482612dca565b600080600083428110156118f4576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b60015461190f908b906001600160a01b03168b348c8c6138be565b6000805460015493975091955091611935916001600160a01b03908116918e911661300f565b90506119438b338388613206565b600160009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561199357600080fd5b505af11580156119a7573d6000803e3d6000fd5b50506001546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018b9052915191909216945063a9059cbb9350604480830193506020928290030181600087803b158015611a0057600080fd5b505af1158015611a14573d6000803e3d6000fd5b505050506040513d6020811015611a2a57600080fd5b5051611a3257fe5b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015611a8a57600080fd5b505af1158015611a9e573d6000803e3d6000fd5b505050506040513d6020811015611ab457600080fd5b5051925034841015611acc57611acc33853403612dca565b505096509650969350505050565b6000610c86848484613ae0565b60608142811015611b2d576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252611b77936001600160a01b0316928c92918b918b91829190850190849080828437600092019190915250612ec292505050565b91508682600081518110611b8757fe5b60200260200101511115610fdf5760405162461bcd60e51b8152600401808060200182810382526023815260200180613ff96023913960400191505060405180910390fd5b6001546001600160a01b031681565b60608142811015611c21576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546001600160a01b03168686600081611c3857fe5b905060200201356001600160a01b03166001600160a01b031614611c91576040805162461bcd60e51b8152602060048201526019602482015260008051602061407d833981519152604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252611cdb936001600160a01b0316923492918b918b918291908501908490808284376000920191909152506130cf92505050565b91508682600184510381518110611cee57fe5b60200260200101511015611d335760405162461bcd60e51b8152600401808060200182810382526027815260200180613f8b6027913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db0908490600090611d5557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d8857600080fd5b505af1158015611d9c573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb9450611dcd9350909116908a908a908161138157fe5b84600081518110611dda57fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015611e3157600080fd5b505af1158015611e45573d6000803e3d6000fd5b505050506040513d6020811015611e5b57600080fd5b5051611e6357fe5b611ea282878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613363915050565b5095945050505050565b6000610c86848484613bd0565b6000808242811015611f00576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b60008054611f18906001600160a01b03168c8c61300f565b604080516323b872dd60e01b81523360048201526001600160a01b03831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015611f7357600080fd5b505af1158015611f87573d6000803e3d6000fd5b505050506040513d6020811015611f9d57600080fd5b50506040805163226bf2d160e21b81526001600160a01b03888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015611fea57600080fd5b505af1158015611ffe573d6000803e3d6000fd5b505050506040513d604081101561201457600080fd5b5080516020909101519092509050600061202e8e8e613c7c565b509050806001600160a01b03168e6001600160a01b031614612051578183612054565b82825b90975095508a8710156120985760405162461bcd60e51b8152600401808060200182810382526022815260200180613f176022913960400191505060405180910390fd5b898610156120d75760405162461bcd60e51b8152600401808060200182810382526022815260200180613ef56022913960400191505060405180910390fd5b505050505097509795505050505050565b804281101561212c576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546001600160a01b0316858560008161214357fe5b905060200201356001600160a01b03166001600160a01b03161461219c576040805162461bcd60e51b8152602060048201526019602482015260008051602061407d833981519152604482015290519081900360640190fd5b60015460408051630d0e30db60e41b8152905134926001600160a01b03169163d0e30db091849160048082019260009290919082900301818588803b1580156121e457600080fd5b505af11580156121f8573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb94506122299350909116908a908a908161138157fe5b836040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561227957600080fd5b505af115801561228d573d6000803e3d6000fd5b505050506040513d60208110156122a357600080fd5b50516122ab57fe5b6000868660001981018181106122bd57fe5b905060200201356001600160a01b03166001600160a01b03166370a08231866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561232257600080fd5b505afa158015612336573d6000803e3d6000fd5b505050506040513d602081101561234c57600080fd5b5051604080516020898102828101820190935289825292935061238e9290918a918a918291850190849080828437600092019190915250899250613586915050565b8761153982898960001981018181106123a357fe5b905060200201356001600160a01b03166001600160a01b03166370a08231896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561150157600080fd5b6000546001600160a01b031681565b600080546001548291612438916001600160a01b03918216918f911661300f565b9050600086612447578b61244b565b6000195b6040805163d505accf60e01b815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c4810187905290519192506001600160a01b0384169163d505accf9160e48082019260009290919082900301818387803b1580156124c157600080fd5b505af11580156124d5573d6000803e3d6000fd5b505050506124e78d8d8d8d8d8d610c8e565b9d9c50505050505050505050505050565b600054606090610e08906001600160a01b031684846130cf565b60608142811015612558576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546001600160a01b03168686600019810181811061257457fe5b905060200201356001600160a01b03166001600160a01b0316146125cd576040805162461bcd60e51b8152602060048201526019602482015260008051602061407d833981519152604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252612617936001600160a01b0316928c92918b918b918291908501908490808284376000920191909152506130cf92505050565b9150868260018451038151811061262a57fe5b6020026020010151101561120a5760405162461bcd60e51b8152600401808060200182810382526027815260200180613f8b6027913960400191505060405180910390fd5b60008082428110156126b6576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546126d2908a906001600160a01b03168a8a8a308a611eb9565b90935091506126e2898685612c76565b60015460408051632e1a7d4d60e01b81526004810185905290516001600160a01b0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561272f57600080fd5b505af1158015612743573d6000803e3d6000fd5b505050506127518583612dca565b50965096945050505050565b600080600083428110156127a6576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6127b48c8c8c8c8c8c6138be565b60008054929650909450906127d3906001600160a01b03168e8e61300f565b90506127e18d338388613206565b6127ed8c338387613206565b806001600160a01b0316636a627842886040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561284557600080fd5b505af1158015612859573d6000803e3d6000fd5b505050506040513d602081101561286f57600080fd5b5051949d939c50939a509198505050505050505050565b606081428110156128cc576040805162461bcd60e51b81526020600482015260146024820152600080516020613fb2833981519152604482015290519081900360640190fd5b6001546001600160a01b031686866000816128e357fe5b905060200201356001600160a01b03166001600160a01b03161461293c576040805162461bcd60e51b8152602060048201526019602482015260008051602061407d833981519152604482015290519081900360640190fd5b6000546040805160208089028281018201909352888252612986936001600160a01b0316928b92918b918b91829190850190849080828437600092019190915250612ec292505050565b9150348260008151811061299657fe5b602002602001015111156129db5760405162461bcd60e51b8152600401808060200182810382526023815260200180613ff96023913960400191505060405180910390fd5b60015482516001600160a01b039091169063d0e30db09084906000906129fd57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a3057600080fd5b505af1158015612a44573d6000803e3d6000fd5b5050600154600080546001600160a01b03928316955063a9059cbb9450612a759350909116908a908a908161138157fe5b84600081518110612a8257fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612ad957600080fd5b505af1158015612aed573d6000803e3d6000fd5b505050506040513d6020811015612b0357600080fd5b5051612b0b57fe5b612b4a82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613363915050565b81600081518110612b5757fe5b6020026020010151341115611ea257611ea23383600081518110612b7757fe5b60200260200101513403612dca565b6000808411612bc65760405162461bcd60e51b8152600401808060200182810382526027815260200180613fd26027913960400191505060405180910390fd5b600083118015612bd65750600082115b612c115760405162461bcd60e51b81526004018080602001828103825260248152602001806140c56024913960400191505060405180910390fd5b6000612c25856103e563ffffffff613d5a16565b90506000612c39828563ffffffff613d5a16565b90506000612c5f83612c53886103e863ffffffff613d5a16565b9063ffffffff613dbd16565b9050808281612c6a57fe5b04979650505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182516000946060949389169392918291908083835b60208310612cf35780518252601f199092019160209182019101612cd4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612d55576040519150601f19603f3d011682016040523d82523d6000602084013e612d5a565b606091505b5091509150818015612d88575080511580612d885750808060200190516020811015612d8557600080fd5b50515b612dc35760405162461bcd60e51b815260040180806020018281038252602d815260200180614050602d913960400191505060405180910390fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b60208310612e165780518252601f199092019160209182019101612df7565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612e78576040519150601f19603f3d011682016040523d82523d6000602084013e612e7d565b606091505b5050905080612ebd5760405162461bcd60e51b815260040180806020018281038252603481526020018061401c6034913960400191505060405180910390fd5b505050565b6060600282511015612f1b576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff81118015612f3357600080fd5b50604051908082528060200260200182016040528015612f5d578160200160208202803683370190505b5090508281600183510381518110612f7157fe5b60209081029190910101528151600019015b801561300757600080612fc087866001860381518110612f9f57fe5b6020026020010151878681518110612fb357fe5b6020026020010151613e0c565b91509150612fe2848481518110612fd357fe5b60200260200101518383613ae0565b846001850381518110612ff157fe5b6020908102919091010152505060001901612f83565b509392505050565b600080600061301e8585613c7c565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6060600282511015613128576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561314057600080fd5b5060405190808252806020026020018201604052801561316a578160200160208202803683370190505b509050828160008151811061317b57fe5b60200260200101818152505060005b6001835103811015613007576000806131c0878685815181106131a957fe5b6020026020010151878660010181518110612fb357fe5b915091506131e28484815181106131d357fe5b60200260200101518383612b86565b8484600101815181106131f157fe5b6020908102919091010152505060010161318a565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b6020831061328b5780518252601f19909201916020918201910161326c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146132ed576040519150601f19603f3d011682016040523d82523d6000602084013e6132f2565b606091505b5091509150818015613320575080511580613320575080806020019051602081101561331d57600080fd5b50515b61335b5760405162461bcd60e51b8152600401808060200182810382526031815260200180613f5a6031913960400191505060405180910390fd5b505050505050565b60005b60018351038110156135805760008084838151811061338157fe5b602002602001015185846001018151811061339857fe5b60200260200101519150915060006133b08383613c7c565b50905060008785600101815181106133c457fe5b60200260200101519050600080836001600160a01b0316866001600160a01b0316146133f2578260006133f6565b6000835b91509150600060028a5103881061340d578861343e565b6000548a5161343e916001600160a01b03169088908d9060028d0190811061343157fe5b602002602001015161300f565b600054909150613458906001600160a01b0316888861300f565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015613495576020820181803683370190505b506040518563ffffffff1660e01b815260040180858152602001848152602001836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b838110156135065781810151838201526020016134ee565b50505050905090810190601f1680156135335780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561355557600080fd5b505af1158015613569573d6000803e3d6000fd5b505060019099019850613366975050505050505050565b50505050565b60005b6001835103811015612ebd576000808483815181106135a457fe5b60200260200101518584600101815181106135bb57fe5b60200260200101519150915060006135d38383613c7c565b5060008054919250906135f0906001600160a01b0316858561300f565b9050600080600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561363157600080fd5b505afa158015613645573d6000803e3d6000fd5b505050506040513d606081101561365b57600080fd5b5080516020909101516001600160701b0391821693501690506000806001600160a01b038a811690891614613691578284613694565b83835b915091506136f2828b6001600160a01b03166370a082318a6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561150157600080fd5b95506136ff868383612b86565b945050505050600080856001600160a01b0316886001600160a01b0316146137295782600061372d565b6000835b91509150600060028c51038a10613744578a613768565b6000548c51613768916001600160a01b0316908a908f9060028f0190811061343157fe5b604080516000808252602082019283905263022c0d9f60e01b835260248201878152604483018790526001600160a01b038086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b838110156137f25781810151838201526020016137da565b50505050905090810190601f16801561381f5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561384157600080fd5b505af1158015613855573d6000803e3d6000fd5b50506001909b019a506135899950505050505050505050565b80820382811115610e0b576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b600080546040805163e6a4390560e01b81526001600160a01b038a811660048301528981166024830152915184938493169163e6a43905916044808301926020929190829003018186803b15801561391557600080fd5b505afa158015613929573d6000803e3d6000fd5b505050506040513d602081101561393f57600080fd5b50516001600160a01b031614156139d75760008054604080516364e329cb60e11b81526001600160a01b038c811660048301528b811660248301529151919092169263c9c6539692604480820193602093909283900390910190829087803b1580156139aa57600080fd5b505af11580156139be573d6000803e3d6000fd5b505050506040513d60208110156139d457600080fd5b50505b6000805481906139f1906001600160a01b03168b8b613e0c565b91509150816000148015613a03575080155b15613a1357879350869250613ad3565b6000613a20898484613bd0565b9050878111613a735785811015613a685760405162461bcd60e51b8152600401808060200182810382526022815260200180613ef56022913960400191505060405180910390fd5b889450925082613ad1565b6000613a80898486613bd0565b905089811115613a8c57fe5b87811015613acb5760405162461bcd60e51b8152600401808060200182810382526022815260200180613f176022913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000808411613b205760405162461bcd60e51b815260040180806020018281038252602881526020018061409d6028913960400191505060405180910390fd5b600083118015613b305750600082115b613b6b5760405162461bcd60e51b81526004018080602001828103825260248152602001806140c56024913960400191505060405180910390fd5b6000613b8f6103e8613b83868863ffffffff613d5a16565b9063ffffffff613d5a16565b90506000613ba96103e5613b83868963ffffffff61386e16565b9050613bc66001828481613bb957fe5b049063ffffffff613dbd16565b9695505050505050565b6000808411613c105760405162461bcd60e51b8152600401808060200182810382526021815260200180613ed46021913960400191505060405180910390fd5b600083118015613c205750600082115b613c5b5760405162461bcd60e51b81526004018080602001828103825260248152602001806140c56024913960400191505060405180910390fd5b82613c6c858463ffffffff613d5a16565b81613c7357fe5b04949350505050565b600080826001600160a01b0316846001600160a01b03161415613cd05760405162461bcd60e51b8152600401808060200182810382526021815260200180613f396021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610613cf0578284613cf3565b83835b90925090506001600160a01b038216613d53576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b6000811580613d7557505080820282828281613d7257fe5b04145b610e0b576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820182811015610e0b576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b6000806000613e1b8585613c7c565b509050600080613e2c88888861300f565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613e6457600080fd5b505afa158015613e78573d6000803e3d6000fd5b505050506040513d6060811015613e8e57600080fd5b5080516020909101516001600160701b0391821693501690506001600160a01b0387811690841614613ec1578082613ec4565b81815b9099909850965050505050505056fe41737472614c6962726172793a20494e53554646494349454e545f414d4f554e544173747261526f757465723a20494e53554646494349454e545f425f414d4f554e544173747261526f757465723a20494e53554646494349454e545f415f414d4f554e5441737472614c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644173747261526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e544173747261526f757465723a204558504952454400000000000000000000000041737472614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e544173747261526f757465723a204558434553534956455f494e5055545f414d4f554e545472616e7366657248656c7065723a3a736166655472616e73666572414d423a20414d42207472616e73666572206661696c65645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c65644173747261526f757465723a20494e56414c49445f504154480000000000000041737472614c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5441737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459a264697066735822122084105bf8a7870bda1fb0942f3c2861ae3de9c185d1e171081c4ffc17582d77a764736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x14F JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x90793EA8 GT PUSH2 0xB6 JUMPI DUP1 PUSH4 0xCF795867 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xCF795867 EQ PUSH2 0x982 JUMPI DUP1 PUSH4 0xD06CA61F EQ PUSH2 0x9F5 JUMPI DUP1 PUSH4 0xE5DEE373 EQ PUSH2 0xAAA JUMPI DUP1 PUSH4 0xE77BDFC5 EQ PUSH2 0xB40 JUMPI DUP1 PUSH4 0xE8E33700 EQ PUSH2 0xB93 JUMPI DUP1 PUSH4 0xEF0DC4BE EQ PUSH2 0xBF5 JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x90793EA8 EQ PUSH2 0x7A1 JUMPI DUP1 PUSH4 0xAC8EE3B6 EQ PUSH2 0x7D2 JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x856 JUMPI DUP1 PUSH4 0xBAA2ABDE EQ PUSH2 0x88C JUMPI DUP1 PUSH4 0xC1C222DF EQ PUSH2 0x8E9 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x96D JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x5C11D795 GT PUSH2 0x108 JUMPI DUP1 PUSH4 0x5C11D795 EQ PUSH2 0x4D2 JUMPI DUP1 PUSH4 0x6EECCB89 EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x8402322D EQ PUSH2 0x5DB JUMPI DUP1 PUSH4 0x84B0B3A2 EQ PUSH2 0x671 JUMPI DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x6D5 JUMPI DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x70B JUMPI PUSH2 0x16A JUMP JUMPDEST DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x16F JUMPI DUP1 PUSH4 0x1E0BCDAE EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x1F00CA74 EQ PUSH2 0x20A JUMPI DUP1 PUSH4 0x2195995C EQ PUSH2 0x30F JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x3A6 JUMPI DUP1 PUSH4 0x40D2463F EQ PUSH2 0x43C JUMPI PUSH2 0x16A JUMP JUMPDEST CALLDATASIZE PUSH2 0x16A JUMPI PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x168 JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x17B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x192 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xC79 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0xC8E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x22D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x260 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xDEE SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2FB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2E3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x160 DUP2 LT ISZERO PUSH2 0x333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH2 0x100 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x120 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x140 ADD CALLDATALOAD PUSH2 0xE11 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xEF7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x45F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x485 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x497 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x10B0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x51B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x52D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x54E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x12F7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x58C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x1580 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x636 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x657 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x167D JUMP JUMPDEST PUSH2 0x6B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x687 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x18AB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1ADA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x717 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x72E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x754 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x766 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x787 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1AE7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7B6 PUSH2 0x1BCC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x7E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x809 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x81B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x83C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1BDB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x879 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x1EAC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x8AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1EB9 JUMP JUMPDEST PUSH2 0x168 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x8FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x920 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x953 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x20E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7B6 PUSH2 0x2408 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x98E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x140 DUP2 LT ISZERO PUSH2 0x9A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP1 PUSH1 0xFF PUSH1 0xE0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH2 0x100 DUP2 ADD CALLDATALOAD SWAP1 PUSH2 0x120 ADD CALLDATALOAD PUSH2 0x2417 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA18 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xA4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xA6C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x24F8 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xACD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xAF3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xB05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xB26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2512 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x38D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xB63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x266F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB9F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0xBB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x275D JUMP JUMPDEST PUSH2 0x2BF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0xC0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xC2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xC3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xC5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2886 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC86 DUP5 DUP5 DUP5 PUSH2 0x2B86 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xCD4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0xCF0 SWAP1 DUP10 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP10 DUP10 ADDRESS DUP10 PUSH2 0x1EB9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH2 0xD74 SWAP3 POP DUP11 SWAP2 DUP8 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2C76 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x2E1A7D4D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xDE3 DUP5 DUP4 PUSH2 0x2DCA JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH2 0xE08 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x2EC2 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 DUP2 SWAP1 PUSH2 0xE2D SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP16 DUP16 PUSH2 0x300F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0xE3C JUMPI DUP13 PUSH2 0xE40 JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xECA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xEDD DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 DUP16 PUSH2 0x1EB9 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP6 POP POP POP POP POP SWAP12 POP SWAP12 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xF3D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE PUSH2 0xF87 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP13 SWAP3 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x30CF SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xF9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0xFDF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F8B PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1071 DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xFEF JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0x1057 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP11 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1025 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x1042 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x300F JUMP JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1064 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3206 JUMP JUMPDEST PUSH2 0xDE3 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3363 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x10F6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x1112 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x116B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x407D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE PUSH2 0x11B5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP13 SWAP3 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2EC2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x11C5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x120A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF9 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x121A DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xFEF JUMPI INVALID JUMPDEST PUSH2 0x1259 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x3363 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 DUP5 SWAP1 PUSH1 0x0 NOT DUP2 ADD SWAP1 DUP2 LT PUSH2 0x1280 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x12D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xDE3 DUP5 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x12EA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2DCA JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x133B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x13A4 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x134B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH2 0x139E PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x1381 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0x1042 JUMPI INVALID JUMPDEST DUP11 PUSH2 0x3206 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x13B6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x141B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x142F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP9 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x1487 SWAP3 SWAP1 SWAP2 DUP10 SWAP2 DUP10 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP PUSH2 0x3586 SWAP2 POP POP JUMP JUMPDEST DUP7 PUSH2 0x1539 DUP3 DUP9 DUP9 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x149C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1515 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x152B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x386E AND JUMP JUMPDEST LT ISZERO PUSH2 0x1576 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F8B PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x15B9 PUSH1 0x0 DUP1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x300F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x15C8 JUMPI DUP13 PUSH2 0x15CC JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP13 SWAP1 MSTORE PUSH1 0xFF DUP11 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP10 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP9 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1642 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1656 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1668 DUP15 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0x266F JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x16C1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x16DD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1736 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x407D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1746 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x134B JUMPI INVALID JUMPDEST PUSH2 0x1784 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x3586 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x17E3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP7 DUP2 LT ISZERO PUSH2 0x183C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F8B PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x2E1A7D4D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1889 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x189D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1576 DUP5 DUP3 PUSH2 0x2DCA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x18F4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x190F SWAP1 DUP12 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 CALLVALUE DUP13 DUP13 PUSH2 0x38BE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD SWAP4 SWAP8 POP SWAP2 SWAP6 POP SWAP2 PUSH2 0x1935 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP15 SWAP2 AND PUSH2 0x300F JUMP JUMPDEST SWAP1 POP PUSH2 0x1943 DUP12 CALLER DUP4 DUP9 PUSH2 0x3206 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1993 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP12 SWAP1 MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP5 POP PUSH4 0xA9059CBB SWAP4 POP PUSH1 0x44 DUP1 DUP4 ADD SWAP4 POP PUSH1 0x20 SWAP3 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1A32 JUMPI INVALID JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A9E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP CALLVALUE DUP5 LT ISZERO PUSH2 0x1ACC JUMPI PUSH2 0x1ACC CALLER DUP6 CALLVALUE SUB PUSH2 0x2DCA JUMP JUMPDEST POP POP SWAP7 POP SWAP7 POP SWAP7 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC86 DUP5 DUP5 DUP5 PUSH2 0x3AE0 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1B2D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE PUSH2 0x1B77 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP13 SWAP3 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2EC2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1B87 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xFDF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF9 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1C21 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 DUP2 PUSH2 0x1C38 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1C91 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x407D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE PUSH2 0x1CDB SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 CALLVALUE SWAP3 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x30CF SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x1CEE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x1D33 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F8B PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0E30DB0 SWAP1 DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x1D55 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1D9C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP6 POP PUSH4 0xA9059CBB SWAP5 POP PUSH2 0x1DCD SWAP4 POP SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP2 PUSH2 0x1381 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1DDA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1E31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1E45 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x1E63 JUMPI INVALID JUMPDEST PUSH2 0x1EA2 DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3363 SWAP2 POP POP JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC86 DUP5 DUP5 DUP5 PUSH2 0x3BD0 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1F00 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x1F18 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 DUP13 PUSH2 0x300F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x44 DUP3 ADD DUP14 SWAP1 MSTORE SWAP2 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F87 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F9D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x226BF2D1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 SWAP3 DUP7 AND SWAP3 PUSH4 0x89AFCB44 SWAP3 PUSH1 0x24 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1FEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1FFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2014 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x202E DUP15 DUP15 PUSH2 0x3C7C JUMP JUMPDEST POP SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2051 JUMPI DUP2 DUP4 PUSH2 0x2054 JUMP JUMPDEST DUP3 DUP3 JUMPDEST SWAP1 SWAP8 POP SWAP6 POP DUP11 DUP8 LT ISZERO PUSH2 0x2098 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F17 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP10 DUP7 LT ISZERO PUSH2 0x20D7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3EF5 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x212C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH1 0x0 DUP2 PUSH2 0x2143 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x219C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x407D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD0E30DB PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD CALLVALUE SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xD0E30DB0 SWAP2 DUP5 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP6 POP PUSH4 0xA9059CBB SWAP5 POP PUSH2 0x2229 SWAP4 POP SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP2 PUSH2 0x1381 JUMPI INVALID JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x228D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x22AB JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x22BD JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2336 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x234C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP10 DUP2 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP10 DUP3 MSTORE SWAP3 SWAP4 POP PUSH2 0x238E SWAP3 SWAP1 SWAP2 DUP11 SWAP2 DUP11 SWAP2 DUP3 SWAP2 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3586 SWAP2 POP POP JUMP JUMPDEST DUP8 PUSH2 0x1539 DUP3 DUP10 DUP10 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x23A3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD DUP3 SWAP2 PUSH2 0x2438 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND SWAP2 DUP16 SWAP2 AND PUSH2 0x300F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0x2447 JUMPI DUP12 PUSH2 0x244B JUMP JUMPDEST PUSH1 0x0 NOT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xD505ACCF PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xC4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP2 PUSH4 0xD505ACCF SWAP2 PUSH1 0xE4 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x24E7 DUP14 DUP14 DUP14 DUP14 DUP14 DUP14 PUSH2 0xC8E JUMP JUMPDEST SWAP14 SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH2 0xE08 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP5 PUSH2 0x30CF JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2558 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 NOT DUP2 ADD DUP2 DUP2 LT PUSH2 0x2574 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x25CD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x407D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE PUSH2 0x2617 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP13 SWAP3 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x30CF SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP DUP7 DUP3 PUSH1 0x1 DUP5 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x262A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x120A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F8B PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x26B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x26D2 SWAP1 DUP11 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x1EB9 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x26E2 DUP10 DUP7 DUP6 PUSH2 0x2C76 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x2E1A7D4D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x272F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2743 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x2751 DUP6 DUP4 PUSH2 0x2DCA JUMP JUMPDEST POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 TIMESTAMP DUP2 LT ISZERO PUSH2 0x27A6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x27B4 DUP13 DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x38BE JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP1 PUSH2 0x27D3 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP15 DUP15 PUSH2 0x300F JUMP JUMPDEST SWAP1 POP PUSH2 0x27E1 DUP14 CALLER DUP4 DUP9 PUSH2 0x3206 JUMP JUMPDEST PUSH2 0x27ED DUP13 CALLER DUP4 DUP8 PUSH2 0x3206 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6A627842 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2845 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2859 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x286F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP5 SWAP14 SWAP4 SWAP13 POP SWAP4 SWAP11 POP SWAP2 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x28CC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x3FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP7 PUSH1 0x0 DUP2 PUSH2 0x28E3 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x293C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x407D DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 DUP2 ADD DUP3 ADD SWAP1 SWAP4 MSTORE DUP9 DUP3 MSTORE PUSH2 0x2986 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP12 SWAP3 SWAP2 DUP12 SWAP2 DUP12 SWAP2 DUP3 SWAP2 SWAP1 DUP6 ADD SWAP1 DUP5 SWAP1 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x2EC2 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 POP CALLVALUE DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2996 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x29DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF9 PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xD0E30DB0 SWAP1 DUP5 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x29FD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A44 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP6 POP PUSH4 0xA9059CBB SWAP5 POP PUSH2 0x2A75 SWAP4 POP SWAP1 SWAP2 AND SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP2 PUSH2 0x1381 JUMPI INVALID JUMPDEST DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2A82 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AD9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2AED JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2B03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x2B0B JUMPI INVALID JUMPDEST PUSH2 0x2B4A DUP3 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3363 SWAP2 POP POP JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B57 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x1EA2 JUMPI PUSH2 0x1EA2 CALLER DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B77 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x2DCA JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x2BC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FD2 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x2BD6 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x2C11 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40C5 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2C25 DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0x3D5A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C39 DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0x3D5A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C5F DUP4 PUSH2 0x2C53 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0x3D5A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3DBD AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x2C6A JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2CF3 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2CD4 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2D55 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2D5A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2D88 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2D88 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x2DC3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4050 PUSH1 0x2D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2E16 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2DF7 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2E78 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2E7D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2EBD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x401C PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x2F1B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A20494E56414C49445F50415448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2F33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2F5D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x2F71 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH1 0x0 NOT ADD JUMPDEST DUP1 ISZERO PUSH2 0x3007 JUMPI PUSH1 0x0 DUP1 PUSH2 0x2FC0 DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0x2F9F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x2FB3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3E0C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2FE2 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2FD3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3AE0 JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x2FF1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x0 NOT ADD PUSH2 0x2F83 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x301E DUP6 DUP6 PUSH2 0x3C7C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0x3128 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A20494E56414C49445F50415448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3140 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x316A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x317B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3007 JUMPI PUSH1 0x0 DUP1 PUSH2 0x31C0 DUP8 DUP7 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x31A9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x2FB3 JUMPI INVALID JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x31E2 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x31D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x2B86 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x31F1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x318A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x328B JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x326C JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x32ED JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x32F2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3320 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3320 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x331D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x335B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F5A PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x3580 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x3381 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3398 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x33B0 DUP4 DUP4 PUSH2 0x3C7C JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP8 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x33C4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x33F2 JUMPI DUP3 PUSH1 0x0 PUSH2 0x33F6 JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP11 MLOAD SUB DUP9 LT PUSH2 0x340D JUMPI DUP9 PUSH2 0x343E JUMP JUMPDEST PUSH1 0x0 SLOAD DUP11 MLOAD PUSH2 0x343E SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP9 SWAP1 DUP14 SWAP1 PUSH1 0x2 DUP14 ADD SWAP1 DUP2 LT PUSH2 0x3431 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x300F JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP PUSH2 0x3458 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP9 PUSH2 0x300F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x22C0D9F DUP5 DUP5 DUP5 PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3495 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3506 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x34EE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x3533 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3569 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP10 ADD SWAP9 POP PUSH2 0x3366 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x2EBD JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x35A4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x35BB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x35D3 DUP4 DUP4 PUSH2 0x3C7C JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH2 0x35F0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP6 PUSH2 0x300F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3631 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3645 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x365B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP10 AND EQ PUSH2 0x3691 JUMPI DUP3 DUP5 PUSH2 0x3694 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x36F2 DUP3 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x70A08231 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1501 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP6 POP PUSH2 0x36FF DUP7 DUP4 DUP4 PUSH2 0x2B86 JUMP JUMPDEST SWAP5 POP POP POP POP POP PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3729 JUMPI DUP3 PUSH1 0x0 PUSH2 0x372D JUMP JUMPDEST PUSH1 0x0 DUP4 JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x2 DUP13 MLOAD SUB DUP11 LT PUSH2 0x3744 JUMPI DUP11 PUSH2 0x3768 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP13 MLOAD PUSH2 0x3768 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP11 SWAP1 DUP16 SWAP1 PUSH1 0x2 DUP16 ADD SWAP1 DUP2 LT PUSH2 0x3431 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP3 DUP4 SWAP1 MSTORE PUSH4 0x22C0D9F PUSH1 0xE0 SHL DUP4 MSTORE PUSH1 0x24 DUP3 ADD DUP8 DUP2 MSTORE PUSH1 0x44 DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0x80 PUSH1 0x84 DUP6 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD PUSH1 0xA4 DUP7 ADD DUP2 SWAP1 MSTORE SWAP7 SWAP8 POP SWAP1 DUP13 AND SWAP6 PUSH4 0x22C0D9F SWAP6 DUP11 SWAP6 DUP11 SWAP6 DUP11 SWAP6 SWAP2 SWAP5 SWAP2 SWAP4 SWAP2 SWAP3 PUSH1 0xC4 DUP7 ADD SWAP3 SWAP1 SWAP2 DUP2 SWAP1 DUP5 SWAP1 DUP5 SWAP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x37F2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x37DA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x381F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3841 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3855 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP12 ADD SWAP11 POP PUSH2 0x3589 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xE0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE6A43905 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP10 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD DUP5 SWAP4 DUP5 SWAP4 AND SWAP2 PUSH4 0xE6A43905 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3929 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x393F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x39D7 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x64E329CB PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP12 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP3 PUSH4 0xC9C65396 SWAP3 PUSH1 0x44 DUP1 DUP3 ADD SWAP4 PUSH1 0x20 SWAP4 SWAP1 SWAP3 DUP4 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x39BE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x39D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH2 0x39F1 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP12 DUP12 PUSH2 0x3E0C JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x3A03 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x3A13 JUMPI DUP8 SWAP4 POP DUP7 SWAP3 POP PUSH2 0x3AD3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A20 DUP10 DUP5 DUP5 PUSH2 0x3BD0 JUMP JUMPDEST SWAP1 POP DUP8 DUP2 GT PUSH2 0x3A73 JUMPI DUP6 DUP2 LT ISZERO PUSH2 0x3A68 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3EF5 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP9 SWAP5 POP SWAP3 POP DUP3 PUSH2 0x3AD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A80 DUP10 DUP5 DUP7 PUSH2 0x3BD0 JUMP JUMPDEST SWAP1 POP DUP10 DUP2 GT ISZERO PUSH2 0x3A8C JUMPI INVALID JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x3ACB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F17 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 POP DUP8 SWAP4 POP JUMPDEST POP JUMPDEST POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3B20 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x409D PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3B30 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3B6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40C5 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x3B8F PUSH2 0x3E8 PUSH2 0x3B83 DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0x3D5A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3D5A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3BA9 PUSH2 0x3E5 PUSH2 0x3B83 DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0x386E AND JUMP JUMPDEST SWAP1 POP PUSH2 0x3BC6 PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0x3BB9 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0x3DBD AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3C10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3ED4 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3C20 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3C5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40C5 PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x3C6C DUP6 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x3D5A AND JUMP JUMPDEST DUP2 PUSH2 0x3C73 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3CD0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3F39 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x3CF0 JUMPI DUP3 DUP5 PUSH2 0x3CF3 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x3D53 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x3D75 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x3D72 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xE0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6D756C2D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xE0B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3E1B DUP6 DUP6 PUSH2 0x3C7C JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x3E2C DUP9 DUP9 DUP9 PUSH2 0x300F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3E64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E78 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3E8E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x3EC1 JUMPI DUP1 DUP3 PUSH2 0x3EC4 JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP INVALID COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20494E53554646494349 GASLIMIT 0x4E SLOAD 0x5F TIMESTAMP 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20494E53554646494349 GASLIMIT 0x4E SLOAD 0x5F COINBASE 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C6564417374 PUSH19 0x61526F757465723A20494E5355464649434945 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20455850495245440000 STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x747261526F757465723A20455843455353495645 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD SLOAD PUSH19 0x616E7366657248656C7065723A3A7361666554 PUSH19 0x616E73666572414D423A20414D42207472616E PUSH20 0x666572206661696C65645472616E736665724865 PUSH13 0x7065723A3A736166655472616E PUSH20 0x6665723A207472616E73666572206661696C6564 COINBASE PUSH20 0x747261526F757465723A20494E56414C49445F50 COINBASE SLOAD 0x48 STOP STOP STOP STOP STOP STOP STOP COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 LT JUMPDEST 0xF8 0xA7 DUP8 SIGNEXTEND 0xDA 0x1F 0xB0 SWAP5 0x2F EXTCODECOPY 0x28 PUSH2 0xAE3D 0xE9 0xC1 DUP6 0xD1 0xE1 PUSH18 0x81C4FFC17582D77A764736F6C6343000606 STOP CALLER ","sourceMap":"298:20949:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;758:4;;-1:-1:-1;;;;;758:4:5;744:10;:18;737:26;;;;298:20949;;12:1:-1;9;2:12;20238:248:5;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20238:248:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20238:248:5;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8160:741;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8160:741:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;8160:741:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20998:247::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20998:247:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;20998:247:5;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;20998:247:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;20998:247:5;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;20998:247:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20998:247:5;;-1:-1:-1;20998:247:5;;-1:-1:-1;;;;;20998:247:5:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20998:247:5;;;;;;;;;;;;;;;;;6279:891;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6279:891:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;6279:891:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10725:729;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10725:729:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;10725:729:5;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;10725:729:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;10725:729:5;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;10725:729:5;;-1:-1:-1;10725:729:5;-1:-1:-1;;;;;;10725:729:5;;;;;;;;:::i;12995:924::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12995:924:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;12995:924:5;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;12995:924:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12995:924:5;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12995:924:5;;-1:-1:-1;12995:924:5;-1:-1:-1;;;;;;12995:924:5;;;;;;;;:::i;17477:754::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17477:754:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;17477:754:5;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;17477:754:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;17477:754:5;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17477:754:5;;-1:-1:-1;17477:754:5;-1:-1:-1;;;;;;17477:754:5;;;;;;;;:::i;7176:908::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7176:908:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;7176:908:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19111:856::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19111:856:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;19111:856:5;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;19111:856:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;19111:856:5;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;19111:856:5;;-1:-1:-1;19111:856:5;-1:-1:-1;;;;;;19111:856:5;;;;;;;;:::i;3452:1074::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;3452:1074:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;20492:247;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20492:247:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20492:247:5;;;;;;;;;;;;:::i;11460:707::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11460:707:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;11460:707:5;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;11460:707:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;11460:707:5;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11460:707:5;;-1:-1:-1;11460:707:5;-1:-1:-1;;;;;;11460:707:5;;;;;;;;:::i;414:28::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;414:28:5;;;:::i;:::-;;;;-1:-1:-1;;;;;414:28:5;;;;;;;;;;;;;;12173:816;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;12173:816:5;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;12173:816:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;12173:816:5;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;12173:816:5;;-1:-1:-1;12173:816:5;-1:-1:-1;;;;;;12173:816:5;;;;;;;;:::i;20008:224::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20008:224:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20008:224:5;;;;;;;;;;;;:::i;4566:986::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4566:986:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;4566:986:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18237:868::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;18237:868:5;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;18237:868:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;18237:868:5;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;18237:868:5;;-1:-1:-1;18237:868:5;-1:-1:-1;;;;;;18237:868:5;;;;;;;;:::i;377:31::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;377:31:5;;;:::i;8907:894::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;8907:894:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;8907:894:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20745:247::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20745:247:5;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;20745:247:5;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;20745:247:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;20745:247:5;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;20745:247:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;20745:247:5;;-1:-1:-1;20745:247:5;;-1:-1:-1;;;;;20745:247:5:i;13925:946::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13925:946:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;13925:946:5;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;13925:946:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;13925:946:5;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;13925:946:5;;-1:-1:-1;13925:946:5;-1:-1:-1;;;;;;13925:946:5;;;;;;;;:::i;5558:715::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5558:715:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;5558:715:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2535:911::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2535:911:5;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;2535:911:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14877:939::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;14877:939:5;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;14877:939:5;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;14877:939:5;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;14877:939:5;;-1:-1:-1;14877:939:5;-1:-1:-1;;;;;;14877:939:5;;;;;;;;:::i;20238:248::-;20385:17;20421:58;20447:8;20457:9;20468:10;20421:25;:58::i;:::-;20414:65;20238:248;-1:-1:-1;;;;20238:248:5:o;8160:741::-;8431:17;8412:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;8524:4:::1;::::0;8476:188:::1;::::0;8505:5;;-1:-1:-1;;;;;8524:4:5::1;8542:9:::0;8565:14;8593:12;8627:4:::1;8646:8:::0;8476:15:::1;:188::i;:::-;8750:38;::::0;;-1:-1:-1;;;8750:38:5;;8782:4:::1;8750:38;::::0;::::1;::::0;;;8460:204;;-1:-1:-1;8674:124:5::1;::::0;-1:-1:-1;8715:5:5;;8734:2;;-1:-1:-1;;;;;8750:23:5;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;8750:38:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;8750:38:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;8750:38:5;8674:27:::1;:124::i;:::-;8814:4;::::0;8808:31:::1;::::0;;-1:-1:-1;;;8808:31:5;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;8814:4:5;;::::1;::::0;8808:20:::1;::::0;:31;;;;;8814:4:::1;::::0;8808:31;;;;;;;;8814:4;;8808:31;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;8808:31:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;8808:31:5;;;;8849:45;8880:2;8884:9;8849:30;:45::i;:::-;8160:741:::0;;;;;;;;;:::o;20998:247::-;21213:7;;21140:24;;21187:51;;-1:-1:-1;;;;;21213:7:5;21222:9;21233:4;21187:25;:51::i;:::-;21180:58;;20998:247;;;;;:::o;6279:891::-;6612:15;6692:7;;6612:15;;;;6671:45;;-1:-1:-1;;;;;6692:7:5;6701:6;6709;6671:20;:45::i;:::-;6656:60;;6726:13;6742:10;:36;;6769:9;6742:36;;;-1:-1:-1;;6742:36:5;6788:170;;;-1:-1:-1;;;6788:170:5;;6825:10;6788:170;;;;6857:4;6788:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6726:52;;-1:-1:-1;;;;;;6788:23:5;;;;;:170;;;;;-1:-1:-1;;6788:170:5;;;;;;;;-1:-1:-1;6788:23:5;:170;;;2:2:-1;;;;27:1;24;17:12;2:2;6788:170:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6788:170:5;;;;6989:174;7018:6;7038;7058:9;7081:10;7105;7129:2;7145:8;6989:15;:174::i;:::-;6968:195;;;;;;;;6279:891;;;;;;;;;;;;;;;;:::o;10725:729::-;10992:24;10965:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;11069:7:::1;::::0;11042:51:::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;-1:-1:-1;;;;;11069:7:5::1;::::0;11078:8;;11042:51;11088:4;;;;;;11042:51;;::::1;::::0;11088:4;;11042:51;11088:4;11042:51;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11042:26:5::1;::::0;-1:-1:-1;;;11042:51:5:i:1;:::-;11032:61;;11155:12;11124:7;11149:1;11132:7;:14;:18;11124:27;;;;;;;;;;;;;;:43;;11103:129;;;;-1:-1:-1::0;;;11103:129:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11242:171;11287:4;;11292:1;11287:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;11287:7:5::1;11308:10;11332:47;11353:7;::::0;::::1;;;;;;;-1:-1:-1::0;;;;;11353:7:5::1;11362:4;;11367:1;11362:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;11362:7:5::1;11371:4;;11376:1;11371:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;11371:7:5::1;11332:20;:47::i;:::-;11393:7;11401:1;11393:10;;;;;;;;;;;;;;11242:31;:171::i;:::-;11423:24;11429:7;11438:4;;11423:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11444:2:5;;-1:-1:-1;11423:5:5::1;::::0;-1:-1:-1;;11423:24:5:i:1;12995:924::-:0;13259:24;13232:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;13332:4:::1;::::0;-1:-1:-1;;;;;13332:4:5::1;13307::::0;;-1:-1:-1;;13312:15:5;;13307:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;13307:21:5::1;-1:-1:-1::0;;;;;13307:29:5::1;;13299:67;;;::::0;;-1:-1:-1;;;13299:67:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;13299:67:5;;;;;;;;;;;;;::::1;;13412:7;::::0;13386:51:::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;-1:-1:-1;;;;;13412:7:5::1;::::0;13421:9;;13386:51;13432:4;;;;;;13386:51;;::::1;::::0;13432:4;;13386:51;13432:4;13386:51;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13386:25:5::1;::::0;-1:-1:-1;;;13386:51:5:i:1;:::-;13376:61;;13482:11;13468:7;13476:1;13468:10;;;;;;;;;;;;;;:25;;13447:107;;;;-1:-1:-1::0;;;13447:107:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13564:171;13609:4;;13614:1;13609:7;;;;;;13564:171;13745:35;13751:7;13760:4;;13745:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;13774:4:5::1;::::0;-1:-1:-1;13745:5:5::1;::::0;-1:-1:-1;;13745:35:5:i:1;:::-;13796:4;::::0;13819:14;;-1:-1:-1;;;;;13796:4:5;;::::1;::::0;13790:20:::1;::::0;13811:7;;-1:-1:-1;;13819:18:5;;;13811:27;::::1;;;;;;;;;;;13790:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;13790:49:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;13790:49:5;;;;13849:63;13880:2;13884:7;13909:1;13892:7;:14;:18;13884:27;;;;;;;;;;;;;;13849:30;:63::i;17477:754::-:0;17714:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;17734:169:::1;17779:4;;17784:1;17779:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;17779:7:5::1;17800:10;17824:47;17845:7;::::0;::::1;;;;;;;-1:-1:-1::0;;;;;17845:7:5::1;17854:4;;17859:1;17854:7;;;;;;;;;;;;;-1:-1:-1::0;;;;;17854:7:5::1;17863:4;;17868:1;17863:7;;;;;;17824:47;17885:8;17734:31;:169::i;:::-;17913:21;17944:4:::0;;-1:-1:-1;;17949:15:5;;17944:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;17944:21:5::1;-1:-1:-1::0;;;;;17937:39:5::1;;17977:2;17937:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;17937:43:5::1;-1:-1:-1::0;;;;;17937:43:5::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;17937:43:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;17937:43:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;17937:43:5;17990:44:::1;::::0;;17937:43:::1;17990:44:::0;;::::1;::::0;;;;;;;;;;;17937:43;;-1:-1:-1;17990:44:5::1;::::0;;;18025:4;;;;;;17990:44;::::1;::::0;18025:4;;17990:44;18025:4;17990:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;18031:2:5;;-1:-1:-1;17990:34:5::1;::::0;-1:-1:-1;;17990:44:5:i:1;:::-;18147:12:::0;18065:62:::1;18113:13:::0;18072:4;;-1:-1:-1;;18077:15:5;;18072:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;18072:21:5::1;-1:-1:-1::0;;;;;18065:39:5::1;;18105:2;18065:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;18065:43:5::1;-1:-1:-1::0;;;;;18065:43:5::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;18065:43:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18065:43:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;18065:43:5;;:62:::1;:47;:62;:::i;:::-;:94;;18044:180;;;;-1:-1:-1::0;;;18044:180:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;563:1;17477:754:::0;;;;;;;:::o;7176:908::-;7525:19;7546:17;7579:12;7594:42;7615:7;;;;;;;;;-1:-1:-1;;;;;7615:7:5;7624:5;7631:4;;;;;;;;;-1:-1:-1;;;;;7631:4:5;7594:20;:42::i;:::-;7579:57;;7646:13;7662:10;:36;;7689:9;7662:36;;;-1:-1:-1;;7662:36:5;7708:170;;;-1:-1:-1;;;7708:170:5;;7745:10;7708:170;;;;7777:4;7708:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7646:52;;-1:-1:-1;;;;;;7708:23:5;;;;;:170;;;;;-1:-1:-1;;7708:170:5;;;;;;;;-1:-1:-1;7708:23:5;:170;;;2:2:-1;;;;27:1;24;17:12;2:2;7708:170:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7708:170:5;;;;7915:162;7947:5;7966:9;7989:14;8017:12;8043:2;8059:8;7915:18;:162::i;:::-;7888:189;;;;-1:-1:-1;7176:908:5;-1:-1:-1;;;;;;;;;;;;;7176:908:5:o;19111:856::-;19345:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;19398:4:::1;::::0;-1:-1:-1;;;;;19398:4:5::1;19373::::0;;-1:-1:-1;;19378:15:5;;19373:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;19373:21:5::1;-1:-1:-1::0;;;;;19373:29:5::1;;19365:67;;;::::0;;-1:-1:-1;;;19365:67:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;19365:67:5;;;;;;;;;;;;;::::1;;19442:169;19487:4;;19492:1;19487:7;;;;;;19442:169;19621:55;19656:4;;19621:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;19670:4:5::1;::::0;-1:-1:-1;19621:34:5::1;::::0;-1:-1:-1;;19621:55:5:i:1;:::-;19713:4;::::0;19706:37:::1;::::0;;-1:-1:-1;;;19706:37:5;;19737:4:::1;19706:37;::::0;::::1;::::0;;;19686:17:::1;::::0;-1:-1:-1;;;;;19713:4:5::1;::::0;19706:22:::1;::::0;:37;;;;;::::1;::::0;;;;;;;;19713:4;19706:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;19706:37:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19706:37:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;19706:37:5;;-1:-1:-1;19774:25:5;;::::1;;19753:111;;;;-1:-1:-1::0;;;19753:111:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19880:4;::::0;19874:31:::1;::::0;;-1:-1:-1;;;19874:31:5;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;19880:4:5;;::::1;::::0;19874:20:::1;::::0;:31;;;;;19880:4:::1;::::0;19874:31;;;;;;;;19880:4;;19874:31;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;19874:31:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19874:31:5;;;;19915:45;19946:2;19950:9;19915:30;:45::i;3452:1074::-:0;3771:19;3804:17;3835;3731:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;3950:4:::1;::::0;3904:169:::1;::::0;3931:5;;-1:-1:-1;;;;;3950:4:5::1;3968:18:::0;4000:9:::1;4023:14:::0;4051:12;3904:13:::1;:169::i;:::-;4083:12;4119:7:::0;;;4135:4;3877:196;;-1:-1:-1;3877:196:5;;-1:-1:-1;4083:12:5;4098:42:::1;::::0;-1:-1:-1;;;;;4119:7:5;;::::1;::::0;4128:5;;4135:4:::1;4098:20;:42::i;:::-;4083:57;;4150:69;4182:5;4189:10;4201:4;4207:11;4150:31;:69::i;:::-;4235:4;;;;;;;;;-1:-1:-1::0;;;;;4235:4:5::1;-1:-1:-1::0;;;;;4229:19:5::1;;4256:9;4229:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;4229:39:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;4291:4:5::1;::::0;4285:37:::1;::::0;;-1:-1:-1;;;4285:37:5;;-1:-1:-1;;;;;4285:37:5;;::::1;;::::0;::::1;::::0;;;;;;;;;4291:4;;;::::1;::::0;-1:-1:-1;4285:20:5::1;::::0;-1:-1:-1;4285:37:5;;;;;-1:-1:-1;4285:37:5::1;::::0;;;;;;4291:4:::1;::::0;4285:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4285:37:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4285:37:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4285:37:5;4278:45:::1;;;;4356:4;-1:-1:-1::0;;;;;4345:21:5::1;;4367:2;4345:25;;;;;;;;;;;;;-1:-1:-1::0;;;;;4345:25:5::1;-1:-1:-1::0;;;;;4345:25:5::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;4345:25:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4345:25:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;4345:25:5;;-1:-1:-1;4419:9:5::1;:21:::0;-1:-1:-1;4415:104:5::1;;;4454:65;4485:10;4509:9;4497;:21;4454:30;:65::i;:::-;563:1;3452:1074:::0;;;;;;;;;;;:::o;20492:247::-;20639:16;20674:58;20699:9;20710;20721:10;20674:24;:58::i;11460:707::-;11727:24;11700:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;11803:7:::1;::::0;11777:51:::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;-1:-1:-1;;;;;11803:7:5::1;::::0;11812:9;;11777:51;11823:4;;;;;;11777:51;;::::1;::::0;11823:4;;11777:51;11823:4;11777:51;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;11777:25:5::1;::::0;-1:-1:-1;;;11777:51:5:i:1;:::-;11767:61;;11873:11;11859:7;11867:1;11859:10;;;;;;;;;;;;;;:25;;11838:107;;;;-1:-1:-1::0;;;11838:107:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;414:28:::0;;;-1:-1:-1;;;;;414:28:5;;:::o;12173:816::-;12427:24;12400:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;12486:4:::1;::::0;-1:-1:-1;;;;;12486:4:5::1;12475::::0;;12486::::1;12475:7:::0;::::1;;;;;;;;;;-1:-1:-1::0;;;;;12475:7:5::1;-1:-1:-1::0;;;;;12475:15:5::1;;12467:53;;;::::0;;-1:-1:-1;;;12467:53:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;12467:53:5;;;;;;;;;;;;;::::1;;12567:7;::::0;12540:52:::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;-1:-1:-1;;;;;12567:7:5::1;::::0;12576:9:::1;::::0;12540:52;12587:4;;;;;;12540:52;;::::1;::::0;12587:4;;12540:52;12587:4;12540:52;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;12540:26:5::1;::::0;-1:-1:-1;;;12540:52:5:i:1;:::-;12530:62;;12654:12;12623:7;12648:1;12631:7;:14;:18;12623:27;;;;;;;;;;;;;;:43;;12602:129;;;;-1:-1:-1::0;;;12602:129:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12747:4;::::0;12768:10;;-1:-1:-1;;;;;12747:4:5;;::::1;::::0;12741:19:::1;::::0;12768:7;;12747:4:::1;::::0;12768:10:::1;;;;;;;;;;12741:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12741:40:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;12817:4:5::1;::::0;::::1;12870:7:::0;;-1:-1:-1;;;;;12817:4:5;;::::1;::::0;-1:-1:-1;12811:20:5::1;::::0;-1:-1:-1;12849:47:5::1;::::0;-1:-1:-1;12870:7:5;;::::1;::::0;12879:4;;;;:7;::::1;;;12849:47;12914:7;12922:1;12914:10;;;;;;;;;;;;;;12811:127;;;;;;;;;;;;;-1:-1:-1::0;;;;;12811:127:5::1;-1:-1:-1::0;;;;;12811:127:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;12811:127:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;12811:127:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;12811:127:5;12791:157:::1;;;;12958:24;12964:7;12973:4;;12958:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;12979:2:5;;-1:-1:-1;12958:5:5::1;::::0;-1:-1:-1;;12958:24:5:i:1;:::-;12173:816:::0;;;;;;;;:::o;20008:224::-;20144:15;20178:47;20197:7;20206:8;20216;20178:18;:47::i;4566:986::-;4864:15;4881;4837:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;4912:12:::1;4948:7:::0;;4927:45:::1;::::0;-1:-1:-1;;;;;4948:7:5::1;4957:6:::0;4965;4927:20:::1;:45::i;:::-;4982:58;::::0;;-1:-1:-1;;;4982:58:5;;5012:10:::1;4982:58;::::0;::::1;::::0;-1:-1:-1;;;;;4982:29:5;::::1;:58:::0;;;;;;;;;;;;;;4912:60;;-1:-1:-1;4982:29:5;;::::1;::::0;:58;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;4982:29:5;:58;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;4982:58:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;4982:58:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;5113:25:5::1;::::0;;-1:-1:-1;;;5113:25:5;;-1:-1:-1;;;;;5113:25:5;;::::1;;::::0;::::1;::::0;;;5077:15:::1;::::0;;;5113:21;;::::1;::::0;::::1;::::0;:25;;;;;;;;;;;5077:15;5113:21;:25;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;5113:25:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;5113:25:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;5113:25:5;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;5113:25:5;-1:-1:-1;5149:14:5::1;5169:39;5193:6:::0;5201;5169:23:::1;:39::i;:::-;5148:60;;;5249:6;-1:-1:-1::0;;;;;5239:16:5::1;:6;-1:-1:-1::0;;;;;5239:16:5::1;;:82;;5304:7;5313;5239:82;;;5271:7;5280;5239:82;5218:103:::0;;-1:-1:-1;5218:103:5;-1:-1:-1;5352:21:5;;::::1;;5331:102;;;;-1:-1:-1::0;;;5331:102:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5475:10;5464:7;:21;;5443:102;;;;-1:-1:-1::0;;;5443:102:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;563:1;;;;4566:986:::0;;;;;;;;;;;:::o;18237:868::-;18453:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;18492:4:::1;::::0;-1:-1:-1;;;;;18492:4:5::1;18481::::0;;18492::::1;18481:7:::0;::::1;;;;;;;;;;-1:-1:-1::0;;;;;18481:7:5::1;-1:-1:-1::0;;;;;18481:15:5::1;;18473:53;;;::::0;;-1:-1:-1;;;18473:53:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;18473:53:5;;;;;;;;;;;;;::::1;;18580:4;::::0;18574:38:::1;::::0;;-1:-1:-1;;;18574:38:5;;;;18555:9:::1;::::0;-1:-1:-1;;;;;18580:4:5::1;::::0;18574:19:::1;::::0;18555:9;;18574:38:::1;::::0;;::::1;::::0;18536:16:::1;::::0;18574:38;;;;;;;;18555:9;18580:4;18574:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;18574:38:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;18648:4:5::1;::::0;::::1;18701:7:::0;;-1:-1:-1;;;;;18648:4:5;;::::1;::::0;-1:-1:-1;18642:20:5::1;::::0;-1:-1:-1;18680:47:5::1;::::0;-1:-1:-1;18701:7:5;;::::1;::::0;18710:4;;;;:7;::::1;;;18680:47;18745:8;18642:125;;;;;;;;;;;;;-1:-1:-1::0;;;;;18642:125:5::1;-1:-1:-1::0;;;;;18642:125:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;18642:125:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18642:125:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;18642:125:5;18622:155:::1;;;;18787:21;18818:4:::0;;-1:-1:-1;;18823:15:5;;18818:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;18818:21:5::1;-1:-1:-1::0;;;;;18811:39:5::1;;18851:2;18811:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;18811:43:5::1;-1:-1:-1::0;;;;;18811:43:5::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;18811:43:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18811:43:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;18811:43:5;18864:44:::1;::::0;;18811:43:::1;18864:44:::0;;::::1;::::0;;;;;;;;;;;18811:43;;-1:-1:-1;18864:44:5::1;::::0;;;18899:4;;;;;;18864:44;::::1;::::0;18899:4;;18864:44;18899:4;18864:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;18905:2:5;;-1:-1:-1;18864:34:5::1;::::0;-1:-1:-1;;18864:44:5:i:1;:::-;19021:12:::0;18939:62:::1;18987:13:::0;18946:4;;-1:-1:-1;;18951:15:5;;18946:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;18946:21:5::1;-1:-1:-1::0;;;;;18939:39:5::1;;18979:2;18939:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;18939:43:5::1;-1:-1:-1::0;;;;;18939:43:5::1;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;377:31:5::0;;;-1:-1:-1;;;;;377:31:5;;:::o;8907:894::-;9253:17;9318:7;;;9334:4;9253:17;;9297:42;;-1:-1:-1;;;;;9318:7:5;;;;9327:5;;9334:4;9297:20;:42::i;:::-;9282:57;;9349:13;9365:10;:36;;9392:9;9365:36;;;-1:-1:-1;;9365:36:5;9411:170;;;-1:-1:-1;;;9411:170:5;;9448:10;9411:170;;;;9480:4;9411:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9349:52;;-1:-1:-1;;;;;;9411:23:5;;;;;:170;;;;;-1:-1:-1;;9411:170:5;;;;;;;;-1:-1:-1;9411:23:5;:170;;;2:2:-1;;;;27:1;24;17:12;2:2;9411:170:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9411:170:5;;;;9603:191;9664:5;9683:9;9706:14;9734:12;9760:2;9776:8;9603:47;:191::i;:::-;9591:203;8907:894;-1:-1:-1;;;;;;;;;;;;;8907:894:5:o;20745:247::-;20961:7;;20887:24;;20934:51;;-1:-1:-1;;;;;20961:7:5;20970:8;20980:4;20934:26;:51::i;13925:946::-;14189:24;14162:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;14262:4:::1;::::0;-1:-1:-1;;;;;14262:4:5::1;14237::::0;;-1:-1:-1;;14242:15:5;;14237:21;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;14237:21:5::1;-1:-1:-1::0;;;;;14237:29:5::1;;14229:67;;;::::0;;-1:-1:-1;;;14229:67:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;14229:67:5;;;;;;;;;;;;;::::1;;14343:7;::::0;14316:51:::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;-1:-1:-1;;;;;14343:7:5::1;::::0;14352:8;;14316:51;14362:4;;;;;;14316:51;;::::1;::::0;14362:4;;14316:51;14362:4;14316:51;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;14316:26:5::1;::::0;-1:-1:-1;;;14316:51:5:i:1;:::-;14306:61;;14429:12;14398:7;14423:1;14406:7;:14;:18;14398:27;;;;;;;;;;;;;;:43;;14377:129;;;;-1:-1:-1::0;;;14377:129:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5558:715:::0;5840:19;5861:17;5813:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;5969:4:::1;::::0;5921:188:::1;::::0;5950:5;;-1:-1:-1;;;;;5969:4:5::1;5987:9:::0;6010:14;6038:12;6072:4:::1;6091:8:::0;5921:15:::1;:188::i;:::-;5894:215:::0;;-1:-1:-1;5894:215:5;-1:-1:-1;6119:51:5::1;6147:5:::0;6154:2;5894:215;6119:27:::1;:51::i;:::-;6186:4;::::0;6180:31:::1;::::0;;-1:-1:-1;;;6180:31:5;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;6186:4:5;;::::1;::::0;6180:20:::1;::::0;:31;;;;;6186:4:::1;::::0;6180:31;;;;;;;;6186:4;;6180:31;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;6180:31:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;6180:31:5;;;;6221:45;6252:2;6256:9;6221:30;:45::i;:::-;5558:715:::0;;;;;;;;;;:::o;2535:911::-;2882:15;2911;2940:17;2842:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;3003:167:::1;3030:6;3050;3070:14;3098;3126:10;3150;3003:13;:167::i;:::-;3180:12;3216:7:::0;;2982:188;;-1:-1:-1;2982:188:5;;-1:-1:-1;3180:12:5;3195:45:::1;::::0;-1:-1:-1;;;;;3216:7:5::1;3225:6:::0;3233;3195:20:::1;:45::i;:::-;3180:60;;3250:66;3282:6;3290:10;3302:4;3308:7;3250:31;:66::i;:::-;3326;3358:6;3366:10;3378:4;3384:7;3326:31;:66::i;:::-;3425:4;-1:-1:-1::0;;;;;3414:21:5::1;;3436:2;3414:25;;;;;;;;;;;;;-1:-1:-1::0;;;;;3414:25:5::1;-1:-1:-1::0;;;;;3414:25:5::1;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;3414:25:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;3414:25:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;3414:25:5;2535:911;;;;-1:-1:-1;3414:25:5;;-1:-1:-1;2535:911:5;;-1:-1:-1;;;;;;;;;2535:911:5:o;14877:939::-;15128:24;15101:8;513:15;501:8;:27;;493:60;;;;;-1:-1:-1;;;493:60:5;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;493:60:5;;;;;;;;;;;;;;;15187:4:::1;::::0;-1:-1:-1;;;;;15187:4:5::1;15176::::0;;15187::::1;15176:7:::0;::::1;;;;;;;;;;-1:-1:-1::0;;;;;15176:7:5::1;-1:-1:-1::0;;;;;15176:15:5::1;;15168:53;;;::::0;;-1:-1:-1;;;15168:53:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;;;;;;;;;15168:53:5;;;;;;;;;;;;;::::1;;15267:7;::::0;15241:51:::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;-1:-1:-1;;;;;15267:7:5::1;::::0;15276:9;;15241:51;15287:4;;;;;;15241:51;;::::1;::::0;15287:4;;15241:51;15287:4;15241:51;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;15241:25:5::1;::::0;-1:-1:-1;;;15241:51:5:i:1;:::-;15231:61;;15337:9;15323:7;15331:1;15323:10;;;;;;;;;;;;;;:23;;15302:105;;;;-1:-1:-1::0;;;15302:105:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15423:4;::::0;15444:10;;-1:-1:-1;;;;;15423:4:5;;::::1;::::0;15417:19:::1;::::0;15444:7;;15423:4:::1;::::0;15444:10:::1;;;;;;;;;;15417:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15417:40:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;-1:-1:::0;;15493:4:5::1;::::0;::::1;15546:7:::0;;-1:-1:-1;;;;;15493:4:5;;::::1;::::0;-1:-1:-1;15487:20:5::1;::::0;-1:-1:-1;15525:47:5::1;::::0;-1:-1:-1;15546:7:5;;::::1;::::0;15555:4;;;;:7;::::1;;;15525:47;15590:7;15598:1;15590:10;;;;;;;;;;;;;;15487:127;;;;;;;;;;;;;-1:-1:-1::0;;;;;15487:127:5::1;-1:-1:-1::0;;;;;15487:127:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;15487:127:5;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;15487:127:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;15487:127:5;15467:157:::1;;;;15634:24;15640:7;15649:4;;15634:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;15655:2:5;;-1:-1:-1;15634:5:5::1;::::0;-1:-1:-1;;15634:24:5:i:1;:::-;15719:7;15727:1;15719:10;;;;;;;;;;;;;;15707:9;:22;15703:106;;;15743:66;15774:10;15798:7;15806:1;15798:10;;;;;;;;;;;;;;15786:9;:22;15743:30;:66::i;2513:587:18:-:0;2645:17;2693:1;2682:8;:12;2674:64;;;;-1:-1:-1;;;2674:64:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2781:1;2769:9;:13;:31;;;;;2799:1;2786:10;:14;2769:31;2748:114;;;;-1:-1:-1;;;2748:114:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2872:23;2898:17;:8;2911:3;2898:17;:12;:17;:::i;:::-;2872:43;-1:-1:-1;2925:17:18;2945:31;2872:43;2965:10;2945:31;:19;:31;:::i;:::-;2925:51;-1:-1:-1;2986:19:18;3008:40;3032:15;3008:19;:9;3022:4;3008:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;2986:62;;3082:11;3070:9;:23;;;;;;;2513:587;-1:-1:-1;;;;;;;2513:587:18:o;652:438:26:-;878:45;;;-1:-1:-1;;;;;878:45:26;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;878:45:26;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;867:57:26;;;;832:12;;846:17;;867:10;;;;878:45;867:57;;;25:18:-1;867:57:26;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;867:57:26;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;831:93:26;;;;955:7;:57;;;;-1:-1:-1;967:11:26;;:16;;:44;;;998:4;987:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;987:24:26;967:44;934:149;;;;-1:-1:-1;;;934:149:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:438;;;;;:::o;1588:214::-;1700:12;;;1660;1700;;;;;;;;;-1:-1:-1;;;;;1678:7:26;;;1693:5;;1678:35;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1678:35:26;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1659:54:26;;;1731:7;1723:72;;;;-1:-1:-1;;;1723:72:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1588:214;;;:::o;4524:630:18:-;4658:24;4717:1;4702:4;:11;:16;;4694:55;;;;;-1:-1:-1;;;4694:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;4783:4;:11;4769:26;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4769:26:18;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4769:26:18;;4759:36;;4835:9;4805:7;4830:1;4813:7;:14;:18;4805:27;;;;;;;;;;;;;;;;;:39;4871:11;;-1:-1:-1;;4871:15:18;4854:294;4888:5;;4854:294;;4915:17;4934:18;4956:104;4985:7;5010:4;5019:1;5015;:5;5010:11;;;;;;;;;;;;;;5039:4;5044:1;5039:7;;;;;;;;;;;;;;4956:11;:104::i;:::-;4914:146;;;;5091:46;5103:7;5111:1;5103:10;;;;;;;;;;;;;;5115:9;5126:10;5091:11;:46::i;:::-;5074:7;5086:1;5082;:5;5074:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;4895:3:18;4854:294;;;;4524:630;;;;;:::o;738:633::-;857:12;882:14;898;916:26;927:6;935;916:10;:26::i;:::-;1154:32;;;-1:-1:-1;;1154:32:18;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1154:32:18;;;;;1144:43;;;;;;-1:-1:-1;;;;;;1036:286:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1036:286:18;;;;;;;1005:335;;;;;;;;;738:633;-1:-1:-1;;;;;738:633:18:o;3837:609::-;3971:24;4030:1;4015:4;:11;:16;;4007:55;;;;;-1:-1:-1;;;4007:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;4096:4;:11;4082:26;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4082:26:18;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4082:26:18;;4072:36;;4131:8;4118:7;4126:1;4118:10;;;;;;;;;;;;;:21;;;;;4154:9;4149:291;4183:1;4169:4;:11;:15;4165:1;:19;4149:291;;;4206:17;4225:18;4247:104;4276:7;4301:4;4306:1;4301:7;;;;;;;;;;;;;;4326:4;4331:1;4335;4331:5;4326:11;;;;;;;4247:104;4205:146;;;;4382:47;4395:7;4403:1;4395:10;;;;;;;;;;;;;;4407:9;4418:10;4382:12;:47::i;:::-;4365:7;4373:1;4377;4373:5;4365:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;4186:3:18;;4149:291;;1096:486:26;1360:51;;;-1:-1:-1;;;;;1360:51:26;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1360:51:26;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1349:63:26;;;;1314:12;;1328:17;;1349:10;;;;1360:51;1349:63;;;25:18:-1;1349:63:26;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1349:63:26;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1313:99:26;;;;1443:7;:57;;;;-1:-1:-1;1455:11:26;;:16;;:44;;;1486:4;1475:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1475:24:26;1455:44;1422:153;;;;-1:-1:-1;;;1422:153:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:486;;;;;;:::o;9908:811:5:-;10047:9;10042:671;10076:1;10062:4;:11;:15;10058:1;:19;10042:671;;;10099:13;10114:14;10133:4;10138:1;10133:7;;;;;;;;;;;;;;10142:4;10147:1;10151;10147:5;10142:11;;;;;;;;;;;;;;10098:56;;;;10169:14;10189:38;10213:5;10220:6;10189:23;:38::i;:::-;10168:59;;;10241:17;10261:7;10269:1;10273;10269:5;10261:14;;;;;;;;;;;;;;10241:34;;10290:18;10310;10341:6;-1:-1:-1;;;;;10332:15:5;:5;-1:-1:-1;;;;;10332:15:5;;:99;;10409:9;10428:1;10332:99;;;10375:1;10379:9;10332:99;10289:142;;;;10445:10;10476:1;10462:4;:11;:15;10458:1;:19;:110;;10565:3;10458:110;;;10517:7;;10534:11;;10496:50;;-1:-1:-1;;;;;10517:7:5;;10526:6;;10534:4;;10543:1;10539:5;;;10534:11;;;;;;;;;;;;10496:20;:50::i;:::-;10614:7;;10445:123;;-1:-1:-1;10593:44:5;;-1:-1:-1;;;;;10614:7:5;10623:5;10630:6;10593:20;:44::i;:::-;-1:-1:-1;;;;;10582:78:5;;10661:10;10673;10685:2;10699:1;10689:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;10689:12:5;87:42:-1;143:17;;-1:-1;10689:12:5;;10582:120;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10582:120:5;-1:-1:-1;;;;;10582:120:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10582:120:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10582:120:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10079:3:5;;;;;-1:-1:-1;10042:671:5;;-1:-1:-1;;;;;;;;10042:671:5;;;9908:811;;;:::o;15959:1512::-;16093:9;16088:1377;16122:1;16108:4;:11;:15;16104:1;:19;16088:1377;;;16145:13;16160:14;16179:4;16184:1;16179:7;;;;;;;;;;;;;;16188:4;16193:1;16197;16193:5;16188:11;;;;;;;;;;;;;;16144:56;;;;16215:14;16235:38;16259:5;16266:6;16235:23;:38::i;:::-;-1:-1:-1;16287:15:5;16354:7;;16214:59;;-1:-1:-1;16287:15:5;16333:44;;-1:-1:-1;;;;;16354:7:5;16363:5;16370:6;16333:20;:44::i;:::-;16287:104;;16405:19;16438:20;16547:16;16565;16587:4;-1:-1:-1;;;;;16587:16:5;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16587:18:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16587:18:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;16587:18:5;;;;;;;-1:-1:-1;;;;;16546:59:5;;;;-1:-1:-1;16546:59:5;;-1:-1:-1;16624:20:5;;-1:-1:-1;;;;;16671:15:5;;;;;;;:101;;16753:8;16763;16671:101;;;16710:8;16720;16671:101;16623:149;;;;16804:94;16868:12;16811:5;-1:-1:-1;;;;;16804:23:5;;16836:4;16804:38;;;;;;;;;;;;;-1:-1:-1;;;;;16804:38:5;-1:-1:-1;;;;;16804:38:5;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;16804:94:5;16790:108;;16931:145;16978:11;17011:12;17045:13;16931:25;:145::i;:::-;16916:160;;16088:1377;;;;17105:18;17125;17156:6;-1:-1:-1;;;;;17147:15:5;:5;-1:-1:-1;;;;;17147:15:5;;:105;;17227:12;17249:1;17147:105;;;17190:1;17194:12;17147:105;17104:148;;;;17266:10;17297:1;17283:4;:11;:15;17279:1;:19;:110;;17386:3;17279:110;;;17338:7;;17355:11;;17317:50;;-1:-1:-1;;;;;17338:7:5;;17347:6;;17355:4;;17364:1;17360:5;;;17355:11;;;;;17317:50;17441:12;;;17451:1;17441:12;;;;;;;;;;-1:-1:-1;;;17403:51:5;;;;;;;;;;;;;;-1:-1:-1;;;;;17403:51:5;;;;;;;;;;;;;;;;;;;;;;17266:123;;-1:-1:-1;17403:9:5;;;;;;17413:10;;17425;;17266:123;;17441:12;;17403:51;;;;;;;;17441:12;;17403:51;;;;17441:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17403:51:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17403:51:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;16125:3:5;;;;;-1:-1:-1;16088:1377:5;;-1:-1:-1;;;;;;;;;;16088:1377:5;286:127:25;369:5;;;364:16;;;;356:50;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;;;862:1667:5;1085:15;1198:7;;1184:46;;;-1:-1:-1;;;1184:46:5;;-1:-1:-1;;;;;1184:46:5;;;;;;;;;;;;;;;;1085:15;;;;1198:7;;1184:30;;:46;;;;;;;;;;;;;;1198:7;1184:46;;;2:2:-1;;;;27:1;24;17:12;2:2;1184:46:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1184:46:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1184:46:5;-1:-1:-1;;;;;1184:60:5;;1180:140;;;1274:7;;;1260:49;;;-1:-1:-1;;;1260:49:5;;-1:-1:-1;;;;;1260:49:5;;;;;;;;;;;;;;;;1274:7;;;;;1260:33;;:49;;;;;;;;;;;;;;;;;;1274:7;1260:49;;;2:2:-1;;;;27:1;24;17:12;2:2;1260:49:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1260:49:5;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;1180:140:5;1330:16;1406:7;;1330:16;;1368:95;;-1:-1:-1;;;;;1406:7:5;1427:6;1447;1368:24;:95::i;:::-;1329:134;;;;1477:8;1489:1;1477:13;:30;;;;-1:-1:-1;1494:13:5;;1477:30;1473:1050;;;1545:14;;-1:-1:-1;1561:14:5;;-1:-1:-1;1473:1050:5;;;1607:22;1632:116;1668:14;1700:8;1726;1632:18;:116::i;:::-;1607:141;;1784:14;1766;:32;1762:751;;1865:10;1847:14;:28;;1818:133;;;;-1:-1:-1;;;1818:133:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1991:14;;-1:-1:-1;2007:14:5;-1:-1:-1;2007:14:5;1762:751;;;2061:22;2086:132;2126:14;2162:8;2192;2086:18;:132::i;:::-;2061:157;;2261:14;2243;:32;;2236:40;;;;2341:10;2323:14;:28;;2294:133;;;;-1:-1:-1;;;2294:133:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2467:14;-1:-1:-1;2483:14:5;;-1:-1:-1;1762:751:5;1473:1050;;862:1667;;;;;;;;;;;:::o;3218:540:18:-;3350:16;3398:1;3386:9;:13;3378:66;;;;-1:-1:-1;;;3378:66:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3487:1;3475:9;:13;:31;;;;;3505:1;3492:10;:14;3475:31;3454:114;;;;-1:-1:-1;;;3454:114:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3578:17;3598:34;3627:4;3598:24;:9;3612;3598:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;3578:54;-1:-1:-1;3642:19:18;3664:34;3694:3;3664:25;:10;3679:9;3664:25;:14;:25;:::i;:34::-;3642:56;;3719:32;3749:1;3732:11;3720:9;:23;;;;;;;3719:32;:29;:32;:::i;:::-;3708:43;3218:540;-1:-1:-1;;;;;;3218:540:18:o;2009:385::-;2130:15;2175:1;2165:7;:11;2157:57;;;;-1:-1:-1;;;2157:57:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2256:1;2245:8;:12;:28;;;;;2272:1;2261:8;:12;2245:28;2224:111;;;;-1:-1:-1;;;2224:111:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2379:8;2355:21;:7;2367:8;2355:21;:11;:21;:::i;:::-;:32;;;;;;;2009:385;-1:-1:-1;;;;2009:385:18:o;260:389::-;359:14;375;423:6;-1:-1:-1;;;;;413:16:18;:6;-1:-1:-1;;;;;413:16:18;;;405:62;;;;-1:-1:-1;;;405:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:6;-1:-1:-1;;;;;496:15:18;:6;-1:-1:-1;;;;;496:15:18;;:77;;558:6;566;496:77;;;527:6;535;496:77;477:96;;-1:-1:-1;477:96:18;-1:-1:-1;;;;;;591:20:18;;583:59;;;;;-1:-1:-1;;;583:59:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;260:389;;;;;:::o;419:140:25:-;471:6;497;;;:30;;-1:-1:-1;;512:5:25;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;-1:-1:-1;;;489:63:25;;;;;;;;;;;;-1:-1:-1;;;489:63:25;;;;;;;;;;;;;;154:126;237:5;;;232:16;;;;224:49;;;;;-1:-1:-1;;;224:49:25;;;;;;;;;;;;-1:-1:-1;;;224:49:25;;;;;;;;;;;;;;1426:473:18;1549:16;1567;1596:14;1616:26;1627:6;1635;1616:10;:26::i;:::-;1595:47;;;1653:16;1671;1717:32;1725:7;1734:6;1742;1717:7;:32::i;:::-;-1:-1:-1;;;;;1693:78:18;;:80;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1693:80:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1693:80:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1693:80:18;;;;;;;-1:-1:-1;;;;;1652:121:18;;;;-1:-1:-1;1652:121:18;;-1:-1:-1;;;;;;1806:16:18;;;;;;;:86;;1873:8;1883;1806:86;;;1838:8;1848;1806:86;1783:109;;;;-1:-1:-1;1426:473:18;-1:-1:-1;;;;;;;1426:473:18:o"},"methodIdentifiers":{"SAMB()":"90793ea8","addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)":"e8e33700","addLiquidityAMB(address,uint256,uint256,uint256,address,uint256)":"84b0b3a2","factory()":"c45a0155","getAmountIn(uint256,uint256,uint256)":"85f8c259","getAmountOut(uint256,uint256,uint256)":"054d50d4","getAmountsIn(uint256,address[])":"1f00ca74","getAmountsOut(uint256,address[])":"d06ca61f","quote(uint256,uint256,uint256)":"ad615dec","removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)":"baa2abde","removeLiquidityAMB(address,uint256,uint256,uint256,address,uint256)":"e77bdfc5","removeLiquidityAMBSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)":"1e0bcdae","removeLiquidityAMBWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"6eeccb89","removeLiquidityAMBWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"cf795867","removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"2195995c","swapAMBForExactTokens(uint256,address[],address,uint256)":"ef0dc4be","swapExactAMBForTokens(uint256,address[],address,uint256)":"ac8ee3b6","swapExactAMBForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)":"c1c222df","swapExactTokensForAMB(uint256,uint256,address[],address,uint256)":"e5dee373","swapExactTokensForAMBSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)":"8402322d","swapExactTokensForTokens(uint256,uint256,address[],address,uint256)":"38ed1739","swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)":"5c11d795","swapTokensForExactAMB(uint256,uint256,address[],address,uint256)":"40d2463f","swapTokensForExactTokens(uint256,uint256,address[],address,uint256)":"8803dbee"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_SAMB\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityAMB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAMB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAMBSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityAMBWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityAMBWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapAMBForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAMBForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAMBForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAMB\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAMBSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactAMB\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/AstraRouter02.sol\":\"AstraRouter02\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraFactory.sol\":{\"keccak256\":\"0x1d8cfacb873119cce028428fbfc6741a17f9dff23726b6f9262be38b04d2147d\",\"urls\":[\"bzz-raw://8161eaf5b9b22d8d7bb774f33dd0465b3796decc507f6509d02800052b6da351\",\"dweb:/ipfs/QmWhWSfZqWbx9iBRsV2PB2oEGcV7tgp8TthHH6ZYbN2JCP\"]},\"contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"contracts/periphery/AstraRouter02.sol\":{\"keccak256\":\"0xad71e5031ded466414830d21edc7945ba52976dc25a70eab266b91ae716ba025\",\"urls\":[\"bzz-raw://cf7d42f55d15b52f1564247b1f8db58693c38fad69726c48af7dc934d555e8ec\",\"dweb:/ipfs/QmcSavCHnTJiZxN7TaDRK1YiyqFn7PKQUGfwAD7HadQE6Q\"]},\"contracts/periphery/interfaces/IAstraRouter01.sol\":{\"keccak256\":\"0x41f94bb4b263f1a0a17e4ca169a7057ecc6d9ff5f575c9047a57e062f7680708\",\"urls\":[\"bzz-raw://d5e155912a41505ccd8702dabc77193fb0bb0601cc0b3efc447aefa98b3a9699\",\"dweb:/ipfs/Qmaev2znL8F5UWbiZJMe124SATkzmrQz4kB5uEeBKyU5iZ\"]},\"contracts/periphery/interfaces/IAstraRouter02.sol\":{\"keccak256\":\"0xe268d7aa46615d29d43e4d2bec9319eb7473627533525e529588d233ec3d2cc9\",\"urls\":[\"bzz-raw://836685e7d3c4b1831001487965bec6b8736fe484e53ffb53804cba4dedd7ba54\",\"dweb:/ipfs/QmYkCCqU7MXVGduf5sYkWRY3ykLKcFzjtxjMx2n4jvmCEb\"]},\"contracts/periphery/interfaces/IERC20.sol\":{\"keccak256\":\"0x61db17aebc5d812c7002d15c1da954065e56abe49d64b14c034abe5604d70eb3\",\"urls\":[\"bzz-raw://b006685e753f9120469f10b09c159f222d4cb8b507a6c1f0c14ed50c883ebe66\",\"dweb:/ipfs/QmSyY7iTugbczPwfGK67etiyPULenYGzzRYbt8aabwwkUb\"]},\"contracts/periphery/interfaces/ISAMB.sol\":{\"keccak256\":\"0xaa6bcbe5a4eda8bed6cb5c2779b1607bfb5e2aa026729ab120e59ec3c93d65c1\",\"urls\":[\"bzz-raw://6741ee95b1b38a1fd9b541eaadebbf81ffa7787049d00ebe410d2126964e3cb2\",\"dweb:/ipfs/QmSchE668jWboooBDstjTNMKuk8f6wgVQWibhXBTTsGDsF\"]},\"contracts/periphery/libraries/AstraLibrary.sol\":{\"keccak256\":\"0xae44fd35f2a3c3498de7cbc39ec1f34ac497d62bfa993d07795ae3bc124b2b31\",\"urls\":[\"bzz-raw://637a1e7bb00c545f7ba83851539379085fe791497a5b36cff1dee4a34e0056d9\",\"dweb:/ipfs/QmaFeUq9bYst2tN6zfTNqGW48kACsvXaofZvKtQP4DTqWh\"]},\"contracts/periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1\",\"urls\":[\"bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c\",\"dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg\"]},\"contracts/periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0x91888c39fcda3d21089c867d943b013f02165203b62e6925b898e5652df313e0\",\"urls\":[\"bzz-raw://ef6af53c706fd1e4a3f5b974bf46f5b811cad331126802f466a56e53b32757a7\",\"dweb:/ipfs/QmdWuxHaLq1wyFgTo5aBBAEcqE2XqGwi249rr8NsTY9qsu\"]}},\"version\":1}"}},"contracts/periphery/examples/ExampleComputeLiquidityValue.sol":{"ExampleComputeLiquidityValue":{"abi":[{"inputs":[{"internalType":"address","name":"factory_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"truePriceTokenA","type":"uint256"},{"internalType":"uint256","name":"truePriceTokenB","type":"uint256"},{"internalType":"uint256","name":"liquidityAmount","type":"uint256"}],"name":"getGasCostOfGetLiquidityValueAfterArbitrageToPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidityAmount","type":"uint256"}],"name":"getLiquidityValue","outputs":[{"internalType":"uint256","name":"tokenAAmount","type":"uint256"},{"internalType":"uint256","name":"tokenBAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"truePriceTokenA","type":"uint256"},{"internalType":"uint256","name":"truePriceTokenB","type":"uint256"},{"internalType":"uint256","name":"liquidityAmount","type":"uint256"}],"name":"getLiquidityValueAfterArbitrageToPrice","outputs":[{"internalType":"uint256","name":"tokenAAmount","type":"uint256"},{"internalType":"uint256","name":"tokenBAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"truePriceTokenA","type":"uint256"},{"internalType":"uint256","name":"truePriceTokenB","type":"uint256"}],"name":"getReservesAfterArbitrage","outputs":[{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60a060405234801561001057600080fd5b506040516111523803806111528339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166110d761007b600039806101a952806101e7528061022a5280610268528061029252506110d76000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633558e94c1461005c57806369a2fcbd146100b157806380caa353146100f3578063c45a015514610147578063d9b7a6e71461016b575b600080fd5b6100986004803603608081101561007257600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356101a1565b6040805192835260208301919091528051918290030190f35b610098600480360360a08110156100c757600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356101df565b610135600480360360a081101561010957600080fd5b506001600160a01b0381358116916020810135909116906040810135906060810135906080013561021f565b60408051918252519081900360200190f35b61014f610266565b604080516001600160a01b039092168252519081900360200190f35b6100986004803603606081101561018157600080fd5b506001600160a01b0381358116916020810135909116906040013561028a565b6000806101d17f0000000000000000000000000000000000000000000000000000000000000000878787876102c5565b915091505b94509492505050565b6000806102107f0000000000000000000000000000000000000000000000000000000000000000888888888861038a565b915091505b9550959350505050565b6000805a90506102537f0000000000000000000000000000000000000000000000000000000000000000888888888861038a565b505060005a909103979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102b97f000000000000000000000000000000000000000000000000000000000000000086868661057b565b91509150935093915050565b6000806102d387878761071d565b909250905081158015906102e75750600081115b6103225760405162461bcd60e51b8152600401808060200182810382526029815260200180610fe66029913960400191505060405180910390fd5b600080610331868686866107eb565b91509150806000141561034657506102159050565b81156103675760006103598286866108d6565b94820194909303925061037e565b60006103748285876108d6565b9094039350918201915b50509550959350505050565b6000806000806001600160a01b0316896001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156103d257600080fd5b505afa1580156103e6573d6000803e3d6000fd5b505050506040513d60208110156103fc57600080fd5b50516001600160a01b03161415905060006104188a8a8a6109c6565b905060008261042857600061048e565b816001600160a01b0316637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50515b90506000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104cb57600080fd5b505afa1580156104df573d6000803e3d6000fd5b505050506040513d60208110156104f557600080fd5b505190508681108015906105095750600087115b6105445760405162461bcd60e51b81526004018080602001828103825260278152602001806110576027913960400191505060405180910390fd5b6000806105548e8e8e8e8e6102c5565b915091506105668282858c8a89610a86565b97509750505050505050965096945050505050565b60008060008061058c88888861071d565b91509150600061059d8989896109c6565b90506000806001600160a01b03168a6001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d602081101561060e57600080fd5b50516001600160a01b03161415905060008161062b576000610691565b826001600160a01b0316637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561066457600080fd5b505afa158015610678573d6000803e3d6000fd5b505050506040513d602081101561068e57600080fd5b50515b90506000836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ce57600080fd5b505afa1580156106e2573d6000803e3d6000fd5b505050506040513d60208110156106f857600080fd5b5051905061070a8686838c8787610a86565b9750975050505050505094509492505050565b600080600061072c8585610b5f565b50905060008061073d8888886109c6565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561077557600080fd5b505afa158015610789573d6000803e3d6000fd5b505050506040513d606081101561079f57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b03878116908416146107d95780826107dc565b81815b90999098509650505050505050565b600080856107fa858786610c3d565b109150600061080f858563ffffffff610cf816565b9050600061086161085c61082b846103e863ffffffff610cf816565b866108365789610838565b8a5b6108576103e589610849578d61084b565b8c5b9063ffffffff610cf816565b610c3d565b610d61565b905060006103e5856108845761087f876103e863ffffffff610cf816565b610896565b610896886103e863ffffffff610cf816565b8161089d57fe5b049050808210156108b85750600093508392506101d6915050565b6108c8828263ffffffff610ea916565b935050505094509492505050565b60008084116109165760405162461bcd60e51b81526004018080602001828103825260278152602001806110306027913960400191505060405180910390fd5b6000831180156109265750600082115b6109615760405162461bcd60e51b815260040180806020018281038252602481526020018061107e6024913960400191505060405180910390fd5b6000610975856103e563ffffffff610cf816565b90506000610989828563ffffffff610cf816565b905060006109af836109a3886103e863ffffffff610cf816565b9063ffffffff610ef916565b90508082816109ba57fe5b04979650505050505050565b60008060006109d58585610b5f565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080838015610a965750600083115b15610b1e576000610ab061085c8a8a63ffffffff610cf816565b90506000610abd85610d61565b905080821115610b1b57876000610ada848463ffffffff610ea916565b90506000610af3846109a387600563ffffffff610cf816565b90506000610b02848484610c3d565b9050610b148c8263ffffffff610ef916565b9b50505050505b50505b85610b2f898763ffffffff610cf816565b81610b3657fe5b0486610b48898863ffffffff610cf816565b81610b4f57fe5b0491509150965096945050505050565b600080826001600160a01b0316846001600160a01b03161415610bb35760405162461bcd60e51b815260040180806020018281038252602181526020018061100f6021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610610bd3578284610bd6565b83835b90925090506001600160a01b038216610c36576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b6000806000610c4c8686610f48565b9150915060008480610c5a57fe5b868809905082811115610c6e576001820391505b918290039181610c8c57848381610c8157fe5b049350505050610cf1565b848210610ce0576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610ceb838387610f75565b93505050505b9392505050565b6000811580610d1357505080820282828281610d1057fe5b04145b610d5b576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b600081610d7057506000610ea4565b816001600160801b8210610d895760809190911c9060401b5b680100000000000000008210610da45760409190911c9060201b5b6401000000008210610dbb5760209190911c9060101b5b620100008210610dd05760109190911c9060081b5b6101008210610de45760089190911c9060041b5b60108210610df75760049190911c9060021b5b60088210610e035760011b5b6001818581610e0e57fe5b048201901c90506001818581610e2057fe5b048201901c90506001818581610e3257fe5b048201901c90506001818581610e4457fe5b048201901c90506001818581610e5657fe5b048201901c90506001818581610e6857fe5b048201901c90506001818581610e7a57fe5b048201901c90506000818581610e8c57fe5b049050808210610e9c5780610e9e565b815b93505050505b919050565b80820382811115610d5b576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b80820182811015610d5b576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b6000808060001984860990508385029250828103915082811015610f6d576001820391505b509250929050565b60008181038216808381610f8557fe5b049250808581610f9157fe5b049450808160000381610fa057fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe41737472614172626974726167654c6962726172793a205a45524f5f504149525f524553455256455341737472614c6962726172793a204944454e544943414c5f41444452455353455341737472614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54436f6d707574654c697175696469747956616c75653a204c49515549444954595f414d4f554e5441737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459a2646970667358221220cd6309d18d7205238a1a8a8d1524d8efc1e1c6a7fd478a5885df06ba63329d8664736f6c63430006060033","opcodes":"PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1152 CODESIZE SUB DUP1 PUSH2 0x1152 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 DUP2 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x10D7 PUSH2 0x7B PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1A9 MSTORE DUP1 PUSH2 0x1E7 MSTORE DUP1 PUSH2 0x22A MSTORE DUP1 PUSH2 0x268 MSTORE DUP1 PUSH2 0x292 MSTORE POP PUSH2 0x10D7 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3558E94C EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x69A2FCBD EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0x80CAA353 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xD9B7A6E7 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x1DF JUMP JUMPDEST PUSH2 0x135 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x21F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14F PUSH2 0x266 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x28A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D1 PUSH32 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x2C5 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x210 PUSH32 0x0 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x38A JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x253 PUSH32 0x0 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x38A JUMP JUMPDEST POP POP PUSH1 0x0 GAS SWAP1 SWAP2 SUB SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2B9 PUSH32 0x0 DUP7 DUP7 DUP7 PUSH2 0x57B JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2D3 DUP8 DUP8 DUP8 PUSH2 0x71D JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2E7 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFE6 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x331 DUP7 DUP7 DUP7 DUP7 PUSH2 0x7EB JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 PUSH1 0x0 EQ ISZERO PUSH2 0x346 JUMPI POP PUSH2 0x215 SWAP1 POP JUMP JUMPDEST DUP2 ISZERO PUSH2 0x367 JUMPI PUSH1 0x0 PUSH2 0x359 DUP3 DUP7 DUP7 PUSH2 0x8D6 JUMP JUMPDEST SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP4 SUB SWAP3 POP PUSH2 0x37E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x374 DUP3 DUP6 DUP8 PUSH2 0x8D6 JUMP JUMPDEST SWAP1 SWAP5 SUB SWAP4 POP SWAP2 DUP3 ADD SWAP2 JUMPDEST POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO SWAP1 POP PUSH1 0x0 PUSH2 0x418 DUP11 DUP11 DUP11 PUSH2 0x9C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x428 JUMPI PUSH1 0x0 PUSH2 0x48E JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7464FC3D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x475 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP7 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x509 JUMPI POP PUSH1 0x0 DUP8 GT JUMPDEST PUSH2 0x544 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1057 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x554 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0x2C5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x566 DUP3 DUP3 DUP6 DUP13 DUP11 DUP10 PUSH2 0xA86 JUMP JUMPDEST SWAP8 POP SWAP8 POP POP POP POP POP POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x58C DUP9 DUP9 DUP9 PUSH2 0x71D JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x59D DUP10 DUP10 DUP10 PUSH2 0x9C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x60E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x62B JUMPI PUSH1 0x0 PUSH2 0x691 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7464FC3D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x70A DUP7 DUP7 DUP4 DUP13 DUP8 DUP8 PUSH2 0xA86 JUMP JUMPDEST SWAP8 POP SWAP8 POP POP POP POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x72C DUP6 DUP6 PUSH2 0xB5F JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x73D DUP9 DUP9 DUP9 PUSH2 0x9C6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x775 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x789 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x79F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x7D9 JUMPI DUP1 DUP3 PUSH2 0x7DC JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH2 0x7FA DUP6 DUP8 DUP7 PUSH2 0xC3D JUMP JUMPDEST LT SWAP2 POP PUSH1 0x0 PUSH2 0x80F DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x861 PUSH2 0x85C PUSH2 0x82B DUP5 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST DUP7 PUSH2 0x836 JUMPI DUP10 PUSH2 0x838 JUMP JUMPDEST DUP11 JUMPDEST PUSH2 0x857 PUSH2 0x3E5 DUP10 PUSH2 0x849 JUMPI DUP14 PUSH2 0x84B JUMP JUMPDEST DUP13 JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST PUSH2 0xC3D JUMP JUMPDEST PUSH2 0xD61 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3E5 DUP6 PUSH2 0x884 JUMPI PUSH2 0x87F DUP8 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST PUSH2 0x896 JUMP JUMPDEST PUSH2 0x896 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST DUP2 PUSH2 0x89D JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x8B8 JUMPI POP PUSH1 0x0 SWAP4 POP DUP4 SWAP3 POP PUSH2 0x1D6 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x8C8 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xEA9 AND JUMP JUMPDEST SWAP4 POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x916 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1030 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x926 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x961 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x107E PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x975 DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x989 DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x9AF DUP4 PUSH2 0x9A3 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xEF9 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x9BA JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x9D5 DUP6 DUP6 PUSH2 0xB5F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP1 ISZERO PUSH2 0xA96 JUMPI POP PUSH1 0x0 DUP4 GT JUMPDEST ISZERO PUSH2 0xB1E JUMPI PUSH1 0x0 PUSH2 0xAB0 PUSH2 0x85C DUP11 DUP11 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xABD DUP6 PUSH2 0xD61 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xB1B JUMPI DUP8 PUSH1 0x0 PUSH2 0xADA DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0xEA9 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xAF3 DUP5 PUSH2 0x9A3 DUP8 PUSH1 0x5 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB02 DUP5 DUP5 DUP5 PUSH2 0xC3D JUMP JUMPDEST SWAP1 POP PUSH2 0xB14 DUP13 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xEF9 AND JUMP JUMPDEST SWAP12 POP POP POP POP POP JUMPDEST POP POP JUMPDEST DUP6 PUSH2 0xB2F DUP10 DUP8 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST DUP2 PUSH2 0xB36 JUMPI INVALID JUMPDEST DIV DUP7 PUSH2 0xB48 DUP10 DUP9 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST DUP2 PUSH2 0xB4F JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xBB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x100F PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xBD3 JUMPI DUP3 DUP5 PUSH2 0xBD6 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xC36 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xC4C DUP7 DUP7 PUSH2 0xF48 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xC5A JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xC6E JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xC8C JUMPI DUP5 DUP4 DUP2 PUSH2 0xC81 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xCF1 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xCE0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xCEB DUP4 DUP4 DUP8 PUSH2 0xF75 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xD13 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xD10 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xD5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6D756C2D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xD70 JUMPI POP PUSH1 0x0 PUSH2 0xEA4 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL DUP3 LT PUSH2 0xD89 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0xDA4 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0xDBB JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0xDD0 JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0xDE4 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0xDF7 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0xE03 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE0E JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE20 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE32 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE44 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE56 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE68 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE7A JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0xE8C JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0xE9C JUMPI DUP1 PUSH2 0xE9E JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xD5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xD5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0xF6D JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0xF85 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0xF91 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0xFA0 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH20 0x7472614172626974726167654C6962726172793A KECCAK256 GAS GASLIMIT MSTORE 0x4F 0x5F POP COINBASE 0x49 MSTORE 0x5F MSTORE GASLIMIT MSTORE8 GASLIMIT MSTORE JUMP GASLIMIT MSTORE8 COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD NUMBER PUSH16 0x6D707574654C69717569646974795661 PUSH13 0x75653A204C4951554944495459 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCD PUSH4 0x9D18D72 SDIV 0x23 DUP11 BYTE DUP11 DUP14 ISZERO 0x24 0xD8 0xEF 0xC1 0xE1 0xC6 0xA7 REVERT SELFBALANCE DUP11 PC DUP6 0xDF MOD 0xBA PUSH4 0x329D8664 PUSH20 0x6F6C634300060600330000000000000000000000 ","sourceMap":"79:2405:6:-:0;;;195:72;5:9:-1;2:2;;;27:1;24;17:12;2:2;195:72:6;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;195:72:6;242:18;;;;-1:-1:-1;;;;;;242:18:6;;;-1:-1:-1;;;;;79:2405:6;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"3992":[{"length":32,"start":425},{"length":32,"start":487},{"length":32,"start":554},{"length":32,"start":616},{"length":32,"start":658}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100575760003560e01c80633558e94c1461005c57806369a2fcbd146100b157806380caa353146100f3578063c45a015514610147578063d9b7a6e71461016b575b600080fd5b6100986004803603608081101561007257600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356101a1565b6040805192835260208301919091528051918290030190f35b610098600480360360a08110156100c757600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356101df565b610135600480360360a081101561010957600080fd5b506001600160a01b0381358116916020810135909116906040810135906060810135906080013561021f565b60408051918252519081900360200190f35b61014f610266565b604080516001600160a01b039092168252519081900360200190f35b6100986004803603606081101561018157600080fd5b506001600160a01b0381358116916020810135909116906040013561028a565b6000806101d17f0000000000000000000000000000000000000000000000000000000000000000878787876102c5565b915091505b94509492505050565b6000806102107f0000000000000000000000000000000000000000000000000000000000000000888888888861038a565b915091505b9550959350505050565b6000805a90506102537f0000000000000000000000000000000000000000000000000000000000000000888888888861038a565b505060005a909103979650505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102b97f000000000000000000000000000000000000000000000000000000000000000086868661057b565b91509150935093915050565b6000806102d387878761071d565b909250905081158015906102e75750600081115b6103225760405162461bcd60e51b8152600401808060200182810382526029815260200180610fe66029913960400191505060405180910390fd5b600080610331868686866107eb565b91509150806000141561034657506102159050565b81156103675760006103598286866108d6565b94820194909303925061037e565b60006103748285876108d6565b9094039350918201915b50509550959350505050565b6000806000806001600160a01b0316896001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156103d257600080fd5b505afa1580156103e6573d6000803e3d6000fd5b505050506040513d60208110156103fc57600080fd5b50516001600160a01b03161415905060006104188a8a8a6109c6565b905060008261042857600061048e565b816001600160a01b0316637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50515b90506000826001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156104cb57600080fd5b505afa1580156104df573d6000803e3d6000fd5b505050506040513d60208110156104f557600080fd5b505190508681108015906105095750600087115b6105445760405162461bcd60e51b81526004018080602001828103825260278152602001806110576027913960400191505060405180910390fd5b6000806105548e8e8e8e8e6102c5565b915091506105668282858c8a89610a86565b97509750505050505050965096945050505050565b60008060008061058c88888861071d565b91509150600061059d8989896109c6565b90506000806001600160a01b03168a6001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156105e457600080fd5b505afa1580156105f8573d6000803e3d6000fd5b505050506040513d602081101561060e57600080fd5b50516001600160a01b03161415905060008161062b576000610691565b826001600160a01b0316637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561066457600080fd5b505afa158015610678573d6000803e3d6000fd5b505050506040513d602081101561068e57600080fd5b50515b90506000836001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ce57600080fd5b505afa1580156106e2573d6000803e3d6000fd5b505050506040513d60208110156106f857600080fd5b5051905061070a8686838c8787610a86565b9750975050505050505094509492505050565b600080600061072c8585610b5f565b50905060008061073d8888886109c6565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561077557600080fd5b505afa158015610789573d6000803e3d6000fd5b505050506040513d606081101561079f57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b03878116908416146107d95780826107dc565b81815b90999098509650505050505050565b600080856107fa858786610c3d565b109150600061080f858563ffffffff610cf816565b9050600061086161085c61082b846103e863ffffffff610cf816565b866108365789610838565b8a5b6108576103e589610849578d61084b565b8c5b9063ffffffff610cf816565b610c3d565b610d61565b905060006103e5856108845761087f876103e863ffffffff610cf816565b610896565b610896886103e863ffffffff610cf816565b8161089d57fe5b049050808210156108b85750600093508392506101d6915050565b6108c8828263ffffffff610ea916565b935050505094509492505050565b60008084116109165760405162461bcd60e51b81526004018080602001828103825260278152602001806110306027913960400191505060405180910390fd5b6000831180156109265750600082115b6109615760405162461bcd60e51b815260040180806020018281038252602481526020018061107e6024913960400191505060405180910390fd5b6000610975856103e563ffffffff610cf816565b90506000610989828563ffffffff610cf816565b905060006109af836109a3886103e863ffffffff610cf816565b9063ffffffff610ef916565b90508082816109ba57fe5b04979650505050505050565b60008060006109d58585610b5f565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080838015610a965750600083115b15610b1e576000610ab061085c8a8a63ffffffff610cf816565b90506000610abd85610d61565b905080821115610b1b57876000610ada848463ffffffff610ea916565b90506000610af3846109a387600563ffffffff610cf816565b90506000610b02848484610c3d565b9050610b148c8263ffffffff610ef916565b9b50505050505b50505b85610b2f898763ffffffff610cf816565b81610b3657fe5b0486610b48898863ffffffff610cf816565b81610b4f57fe5b0491509150965096945050505050565b600080826001600160a01b0316846001600160a01b03161415610bb35760405162461bcd60e51b815260040180806020018281038252602181526020018061100f6021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610610bd3578284610bd6565b83835b90925090506001600160a01b038216610c36576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b6000806000610c4c8686610f48565b9150915060008480610c5a57fe5b868809905082811115610c6e576001820391505b918290039181610c8c57848381610c8157fe5b049350505050610cf1565b848210610ce0576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610ceb838387610f75565b93505050505b9392505050565b6000811580610d1357505080820282828281610d1057fe5b04145b610d5b576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b600081610d7057506000610ea4565b816001600160801b8210610d895760809190911c9060401b5b680100000000000000008210610da45760409190911c9060201b5b6401000000008210610dbb5760209190911c9060101b5b620100008210610dd05760109190911c9060081b5b6101008210610de45760089190911c9060041b5b60108210610df75760049190911c9060021b5b60088210610e035760011b5b6001818581610e0e57fe5b048201901c90506001818581610e2057fe5b048201901c90506001818581610e3257fe5b048201901c90506001818581610e4457fe5b048201901c90506001818581610e5657fe5b048201901c90506001818581610e6857fe5b048201901c90506001818581610e7a57fe5b048201901c90506000818581610e8c57fe5b049050808210610e9c5780610e9e565b815b93505050505b919050565b80820382811115610d5b576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b80820182811015610d5b576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fd5b6000808060001984860990508385029250828103915082811015610f6d576001820391505b509250929050565b60008181038216808381610f8557fe5b049250808581610f9157fe5b049450808160000381610fa057fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe41737472614172626974726167654c6962726172793a205a45524f5f504149525f524553455256455341737472614c6962726172793a204944454e544943414c5f41444452455353455341737472614c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54436f6d707574654c697175696469747956616c75653a204c49515549444954595f414d4f554e5441737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459a2646970667358221220cd6309d18d7205238a1a8a8d1524d8efc1e1c6a7fd478a5885df06ba63329d8664736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3558E94C EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x69A2FCBD EQ PUSH2 0xB1 JUMPI DUP1 PUSH4 0x80CAA353 EQ PUSH2 0xF3 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0xD9B7A6E7 EQ PUSH2 0x16B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x1A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x1DF JUMP JUMPDEST PUSH2 0x135 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x21F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14F PUSH2 0x266 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x98 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x28A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1D1 PUSH32 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x2C5 JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x210 PUSH32 0x0 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x38A JUMP JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 GAS SWAP1 POP PUSH2 0x253 PUSH32 0x0 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH2 0x38A JUMP JUMPDEST POP POP PUSH1 0x0 GAS SWAP1 SWAP2 SUB SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2B9 PUSH32 0x0 DUP7 DUP7 DUP7 PUSH2 0x57B JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP4 POP SWAP4 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2D3 DUP8 DUP8 DUP8 PUSH2 0x71D JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP DUP2 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2E7 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0x322 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xFE6 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x331 DUP7 DUP7 DUP7 DUP7 PUSH2 0x7EB JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP1 PUSH1 0x0 EQ ISZERO PUSH2 0x346 JUMPI POP PUSH2 0x215 SWAP1 POP JUMP JUMPDEST DUP2 ISZERO PUSH2 0x367 JUMPI PUSH1 0x0 PUSH2 0x359 DUP3 DUP7 DUP7 PUSH2 0x8D6 JUMP JUMPDEST SWAP5 DUP3 ADD SWAP5 SWAP1 SWAP4 SUB SWAP3 POP PUSH2 0x37E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x374 DUP3 DUP6 DUP8 PUSH2 0x8D6 JUMP JUMPDEST SWAP1 SWAP5 SUB SWAP4 POP SWAP2 DUP3 ADD SWAP2 JUMPDEST POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3E6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO SWAP1 POP PUSH1 0x0 PUSH2 0x418 DUP11 DUP11 DUP11 PUSH2 0x9C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH2 0x428 JUMPI PUSH1 0x0 PUSH2 0x48E JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7464FC3D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x475 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x48B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP7 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x509 JUMPI POP PUSH1 0x0 DUP8 GT JUMPDEST PUSH2 0x544 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1057 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x554 DUP15 DUP15 DUP15 DUP15 DUP15 PUSH2 0x2C5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x566 DUP3 DUP3 DUP6 DUP13 DUP11 DUP10 PUSH2 0xA86 JUMP JUMPDEST SWAP8 POP SWAP8 POP POP POP POP POP POP POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x58C DUP9 DUP9 DUP9 PUSH2 0x71D JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x59D DUP10 DUP10 DUP10 PUSH2 0x9C6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x17E7E58 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5F8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x60E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO SWAP1 POP PUSH1 0x0 DUP2 PUSH2 0x62B JUMPI PUSH1 0x0 PUSH2 0x691 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7464FC3D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x678 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x18160DDD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x70A DUP7 DUP7 DUP4 DUP13 DUP8 DUP8 PUSH2 0xA86 JUMP JUMPDEST SWAP8 POP SWAP8 POP POP POP POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x72C DUP6 DUP6 PUSH2 0xB5F JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x73D DUP9 DUP9 DUP9 PUSH2 0x9C6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x775 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x789 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x79F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x7D9 JUMPI DUP1 DUP3 PUSH2 0x7DC JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH2 0x7FA DUP6 DUP8 DUP7 PUSH2 0xC3D JUMP JUMPDEST LT SWAP2 POP PUSH1 0x0 PUSH2 0x80F DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x861 PUSH2 0x85C PUSH2 0x82B DUP5 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST DUP7 PUSH2 0x836 JUMPI DUP10 PUSH2 0x838 JUMP JUMPDEST DUP11 JUMPDEST PUSH2 0x857 PUSH2 0x3E5 DUP10 PUSH2 0x849 JUMPI DUP14 PUSH2 0x84B JUMP JUMPDEST DUP13 JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST PUSH2 0xC3D JUMP JUMPDEST PUSH2 0xD61 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3E5 DUP6 PUSH2 0x884 JUMPI PUSH2 0x87F DUP8 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST PUSH2 0x896 JUMP JUMPDEST PUSH2 0x896 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST DUP2 PUSH2 0x89D JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x8B8 JUMPI POP PUSH1 0x0 SWAP4 POP DUP4 SWAP3 POP PUSH2 0x1D6 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x8C8 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xEA9 AND JUMP JUMPDEST SWAP4 POP POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x916 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1030 PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x926 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x961 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x107E PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x975 DUP6 PUSH2 0x3E5 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x989 DUP3 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x9AF DUP4 PUSH2 0x9A3 DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xEF9 AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x9BA JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x9D5 DUP6 DUP6 PUSH2 0xB5F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP1 ISZERO PUSH2 0xA96 JUMPI POP PUSH1 0x0 DUP4 GT JUMPDEST ISZERO PUSH2 0xB1E JUMPI PUSH1 0x0 PUSH2 0xAB0 PUSH2 0x85C DUP11 DUP11 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xABD DUP6 PUSH2 0xD61 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0xB1B JUMPI DUP8 PUSH1 0x0 PUSH2 0xADA DUP5 DUP5 PUSH4 0xFFFFFFFF PUSH2 0xEA9 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xAF3 DUP5 PUSH2 0x9A3 DUP8 PUSH1 0x5 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xB02 DUP5 DUP5 DUP5 PUSH2 0xC3D JUMP JUMPDEST SWAP1 POP PUSH2 0xB14 DUP13 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xEF9 AND JUMP JUMPDEST SWAP12 POP POP POP POP POP JUMPDEST POP POP JUMPDEST DUP6 PUSH2 0xB2F DUP10 DUP8 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST DUP2 PUSH2 0xB36 JUMPI INVALID JUMPDEST DIV DUP7 PUSH2 0xB48 DUP10 DUP9 PUSH4 0xFFFFFFFF PUSH2 0xCF8 AND JUMP JUMPDEST DUP2 PUSH2 0xB4F JUMPI INVALID JUMPDEST DIV SWAP2 POP SWAP2 POP SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xBB3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x100F PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xBD3 JUMPI DUP3 DUP5 PUSH2 0xBD6 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xC36 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xC4C DUP7 DUP7 PUSH2 0xF48 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xC5A JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xC6E JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xC8C JUMPI DUP5 DUP4 DUP2 PUSH2 0xC81 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xCF1 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xCE0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xCEB DUP4 DUP4 DUP8 PUSH2 0xF75 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xD13 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xD10 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xD5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6D756C2D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xD70 JUMPI POP PUSH1 0x0 PUSH2 0xEA4 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL DUP3 LT PUSH2 0xD89 JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0xDA4 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0xDBB JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0xDD0 JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0xDE4 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0xDF7 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0xE03 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE0E JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE20 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE32 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE44 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE56 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE68 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xE7A JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0xE8C JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0xE9C JUMPI DUP1 PUSH2 0xE9E JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xD5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xD5B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0xF6D JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0xF85 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0xF91 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0xFA0 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH20 0x7472614172626974726167654C6962726172793A KECCAK256 GAS GASLIMIT MSTORE 0x4F 0x5F POP COINBASE 0x49 MSTORE 0x5F MSTORE GASLIMIT MSTORE8 GASLIMIT MSTORE JUMP GASLIMIT MSTORE8 COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD NUMBER PUSH16 0x6D707574654C69717569646974795661 PUSH13 0x75653A204C4951554944495459 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCD PUSH4 0x9D18D72 SDIV 0x23 DUP11 BYTE DUP11 DUP14 ISZERO 0x24 0xD8 0xEF 0xC1 0xE1 0xC6 0xA7 REVERT SELFBALANCE DUP11 PC DUP6 0xDF MOD 0xBA PUSH4 0x329D8664 PUSH20 0x6F6C634300060600330000000000000000000000 ","sourceMap":"79:2405:6:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;79:2405:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;336:418:6;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;336:418:6;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1267:536;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;1267:536:6;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1876:606::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;1876:606:6;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;156:32;;;:::i;:::-;;;;-1:-1:-1;;;;;156:32:6;;;;;;;;;;;;;;815:370;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;815:370:6;;;;;;;;;;;;;;;;;:::i;336:418::-;514:16;532;567:180;632:7;653:6;673;693:15;722;567:51;:180::i;:::-;560:187;;;;336:418;;;;;;;;:::o;1267:536::-;1500:20;1530;1574:222;1652:7;1673:6;1693;1713:15;1742;1771;1574:64;:222::i;:::-;1567:229;;;;1267:536;;;;;;;;;:::o;1876:606::-;2121:7;2145:14;2162:9;2145:26;;2181:222;2259:7;2280:6;2300;2320:15;2349;2378;2181:64;:222::i;:::-;;;2413:13;2429:9;2455:20;;;;1876:606;-1:-1:-1;;;;;;;1876:606:6:o;156:32::-;;;:::o;815:370::-;961:20;991;1035:143;1092:7;1113:6;1133;1153:15;1035:43;:143::i;:::-;1028:150;;;;815:370;;;;;;:::o;1570:1145:19:-;1773:16;1791;1888:49;1913:7;1922:6;1930;1888:24;:49::i;:::-;1865:72;;-1:-1:-1;1865:72:19;-1:-1:-1;1956:12:19;;;;;:28;;;1983:1;1972:8;:12;1956:28;1948:82;;;;-1:-1:-1;;;1948:82:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2108:9;2119:16;2139:82;2168:15;2185;2202:8;2212;2139:28;:82::i;:::-;2107:114;;;;2236:8;2248:1;2236:13;2232:71;;;-1:-1:-1;2265:27:19;;-1:-1:-1;2265:27:19;2232:71;2365:4;2361:348;;;2385:14;2402:55;2428:8;2438;2448;2402:25;:55::i;:::-;2471:20;;;;2505:21;;;;-1:-1:-1;2361:348:19;;;2557:14;2574:55;2600:8;2610;2620;2574:25;:55::i;:::-;2677:21;;;;-1:-1:-1;2643:20:19;;;;2361:348;1570:1145;;;;;;;;;;:::o;4851:968::-;5109:20;5139;5176:10;5231:1;-1:-1:-1;;;;;5189:44:19;5203:7;-1:-1:-1;;;;;5189:28:19;;:30;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5189:30:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5189:30:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5189:30:19;-1:-1:-1;;;;;5189:44:19;;;;-1:-1:-1;5243:15:19;5272:45;5293:7;5302:6;5310;5272:20;:45::i;:::-;5243:75;;5328:10;5341:5;:24;;5364:1;5341:24;;;5349:4;-1:-1:-1;;;;;5349:10:19;;:12;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5349:12:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5349:12:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5349:12:19;5341:24;5328:37;;5375:16;5394:4;-1:-1:-1;;;;;5394:16:19;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5394:18:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5394:18:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5394:18:19;;-1:-1:-1;5480:30:19;;;;;;:53;;;5532:1;5514:15;:19;5480:53;5472:105;;;;-1:-1:-1;;;5472:105:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5589:14;5605;5623:84;5649:7;5658:6;5666;5674:15;5691;5623:25;:84::i;:::-;5588:119;;;;5725:87;5747:9;5758;5769:11;5782:15;5799:5;5806;5725:21;:87::i;:::-;5718:94;;;;;;;;;;4851:968;;;;;;;;;:::o;3962:663::-;4124:20;4146;4179:17;4198;4219:49;4244:7;4253:6;4261;4219:24;:49::i;:::-;4178:90;;;;4278:15;4307:45;4328:7;4337:6;4345;4307:20;:45::i;:::-;4278:75;;4363:10;4418:1;-1:-1:-1;;;;;4376:44:19;4390:7;-1:-1:-1;;;;;4376:28:19;;:30;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4376:30:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4376:30:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4376:30:19;-1:-1:-1;;;;;4376:44:19;;;;-1:-1:-1;4430:10:19;4376:44;4443:24;;4466:1;4443:24;;;4451:4;-1:-1:-1;;;;;4451:10:19;;:12;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4451:12:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4451:12:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4451:12:19;4443:24;4430:37;;4477:16;4496:4;-1:-1:-1;;;;;4496:16:19;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4496:18:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4496:18:19;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;4496:18:19;;-1:-1:-1;4531:87:19;4553:9;4564;4496:18;4588:15;4605:5;4612;4531:21;:87::i;:::-;4524:94;;;;;;;;;;3962:663;;;;;;;:::o;1426:473:18:-;1549:16;1567;1596:14;1616:26;1627:6;1635;1616:10;:26::i;:::-;1595:47;;;1653:16;1671;1717:32;1725:7;1734:6;1742;1717:7;:32::i;:::-;-1:-1:-1;;;;;1693:78:18;;:80;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1693:80:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1693:80:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1693:80:18;;;;;;;1652:121;;;;;-1:-1:-1;1652:121:18;;-1:-1:-1;;;;;;1806:16:18;;;;;;;:86;;1873:8;1883;1806:86;;;1838:8;1848;1806:86;1783:109;;;;-1:-1:-1;1426:473:18;-1:-1:-1;;;;;;;1426:473:18:o;530:903:19:-;715:9;726:16;816:15;761:52;777:8;787:15;804:8;761:15;:52::i;:::-;:70;;-1:-1:-1;842:17:19;862:22;:8;875;862:22;:12;:22;:::i;:::-;842:42;-1:-1:-1;895:16:19;914:232;943:193;976:19;842:42;990:4;976:19;:13;:19;:::i;:::-;1013:4;:40;;1038:15;1013:40;;;1020:15;1013:40;1071:51;1118:3;1072:4;:40;;1097:15;1072:40;;;1079:15;1072:40;1071:46;:51;:46;:51;:::i;:::-;943:15;:193::i;:::-;914:15;:232::i;:::-;895:251;;1156:17;1227:3;1177:4;:46;;1205:18;:8;1218:4;1205:18;:12;:18;:::i;:::-;1177:46;;;1184:18;:8;1197:4;1184:18;:12;:18;:::i;:::-;1176:54;;;;;;1156:74;;1256:9;1245:8;:20;1241:43;;;-1:-1:-1;1275:5:19;;-1:-1:-1;1275:5:19;;-1:-1:-1;1267:17:19;;-1:-1:-1;;1267:17:19;1241:43;1403:23;:8;1416:9;1403:23;:12;:23;:::i;:::-;1392:34;;530:903;;;;;;;;;;:::o;2513:587:18:-;2645:17;2693:1;2682:8;:12;2674:64;;;;-1:-1:-1;;;2674:64:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2781:1;2769:9;:13;:31;;;;;2799:1;2786:10;:14;2769:31;2748:114;;;;-1:-1:-1;;;2748:114:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2872:23;2898:17;:8;2911:3;2898:17;:12;:17;:::i;:::-;2872:43;-1:-1:-1;2925:17:18;2945:31;2872:43;2965:10;2945:31;:19;:31;:::i;:::-;2925:51;-1:-1:-1;2986:19:18;3008:40;3032:15;3008:19;:9;3022:4;3008:19;:13;:19;:::i;:::-;:23;:40;:23;:40;:::i;:::-;2986:62;;3082:11;3070:9;:23;;;;;;;2513:587;-1:-1:-1;;;;;;;2513:587:18:o;738:633::-;857:12;882:14;898;916:26;927:6;935;916:10;:26::i;:::-;1154:32;;;-1:-1:-1;;1154:32:18;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1154:32:18;;;;;1144:43;;;;;;-1:-1:-1;;;;;;1036:286:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1036:286:18;;;;;;;1005:335;;;;;;;;;738:633;-1:-1:-1;;;;;738:633:18:o;2790:910:19:-;3006:20;3028;3064:5;:18;;;;;3081:1;3073:5;:9;3064:18;3060:525;;;3098:10;3111:41;3127:24;:9;3141;3127:24;:13;:24;:::i;3111:41::-;3098:54;;3166:14;3183:22;3199:5;3183:15;:22::i;:::-;3166:39;;3231:9;3223:5;:17;3219:356;;;3278:11;3260:15;3325:20;:5;3335:9;3325:20;:9;:20;:::i;:::-;3307:38;-1:-1:-1;3363:16:19;3382:27;3399:9;3382:12;:5;3392:1;3382:12;:9;:12;:::i;:27::-;3363:46;;3427:17;3447:52;3463:10;3475;3487:11;3447:15;:52::i;:::-;3427:72;-1:-1:-1;3531:29:19;:11;3427:72;3531:29;:15;:29;:::i;:::-;3517:43;;3219:356;;;;;3060:525;;;3635:11;3602:30;:9;3616:15;3602:30;:13;:30;:::i;:::-;:44;;;;;;3681:11;3648:30;:9;3662:15;3648:30;:13;:30;:::i;:::-;:44;;;;;;3594:99;;;;2790:910;;;;;;;;;:::o;260:389:18:-;359:14;375;423:6;-1:-1:-1;;;;;413:16:18;:6;-1:-1:-1;;;;;413:16:18;;;405:62;;;;-1:-1:-1;;;405:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:6;-1:-1:-1;;;;;496:15:18;:6;-1:-1:-1;;;;;496:15:18;;:77;;558:6;566;496:77;;;527:6;535;496:77;477:96;;-1:-1:-1;477:96:18;-1:-1:-1;;;;;;591:20:18;;583:59;;;;;-1:-1:-1;;;583:59:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;260:389;;;;;:::o;897:373:24:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;-1:-1:-1;;;1186:44:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;;;;;897:373;;;;;;:::o;419:140:25:-;471:6;497;;;:30;;-1:-1:-1;;512:5:25;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;-1:-1:-1;;;489:63:25;;;;;;;;;;;;-1:-1:-1;;;489:63:25;;;;;;;;;;;;;;;419:140;;;;:::o;382:1197:21:-;430:7;453:6;449:20;;-1:-1:-1;468:1:21;461:8;;449:20;644:1;667;-1:-1:-1;;;682:41:21;;678:104;;746:3;739:10;;;;;769:2;763:8;678:104;801:19;795:2;:25;791:87;;843:2;836:9;;;;;865:2;859:8;791:87;897:11;891:2;:17;887:79;;931:2;924:9;;;;;953:2;947:8;887:79;985:7;979:2;:13;975:74;;1015:2;1008:9;;;;;1037:1;1031:7;975:74;1068:5;1062:2;:11;1058:71;;1096:1;1089:8;;;;;1117:1;1111:7;1058:71;1148:4;1142:2;:10;1138:70;;1175:1;1168:8;;;;;1196:1;1190:7;1138:70;1227:3;1221:2;:9;1217:47;;1252:1;1246:7;1217:47;1292:1;1286;1282;:5;;;;;;1278:1;:9;1277:16;;1273:20;;1322:1;1316;1312;:5;;;;;;1308:1;:9;1307:16;;1303:20;;1352:1;1346;1342;:5;;;;;;1338:1;:9;1337:16;;1333:20;;1382:1;1376;1372;:5;;;;;;1368:1;:9;1367:16;;1363:20;;1412:1;1406;1402;:5;;;;;;1398:1;:9;1397:16;;1393:20;;1442:1;1436;1432;:5;;;;;;1428:1;:9;1427:16;;1423:20;;1472:1;1466;1462;:5;;;;;;1458:1;:9;1457:16;;1453:20;;1520:10;1537:1;1533;:5;;;;;;1520:18;;1560:2;1556:1;:6;:15;;1569:2;1556:15;;;1565:1;1556:15;1548:24;;;;;382:1197;;;;:::o;286:127:25:-;369:5;;;364:16;;;;356:50;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;;;154:126;237:5;;;232:16;;;;224:49;;;;;-1:-1:-1;;;224:49:25;;;;;;;;;;;;-1:-1:-1;;;224:49:25;;;;;;;;;;;;;;216:206:24;278:9;;;-1:-1:-1;;333:1:24;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:24:o"},"methodIdentifiers":{"factory()":"c45a0155","getGasCostOfGetLiquidityValueAfterArbitrageToPrice(address,address,uint256,uint256,uint256)":"80caa353","getLiquidityValue(address,address,uint256)":"d9b7a6e7","getLiquidityValueAfterArbitrageToPrice(address,address,uint256,uint256,uint256)":"69a2fcbd","getReservesAfterArbitrage(address,address,uint256,uint256)":"3558e94c"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityAmount\",\"type\":\"uint256\"}],\"name\":\"getGasCostOfGetLiquidityValueAfterArbitrageToPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityAmount\",\"type\":\"uint256\"}],\"name\":\"getLiquidityValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityAmount\",\"type\":\"uint256\"}],\"name\":\"getLiquidityValueAfterArbitrageToPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenAAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenB\",\"type\":\"uint256\"}],\"name\":\"getReservesAfterArbitrage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/examples/ExampleComputeLiquidityValue.sol\":\"ExampleComputeLiquidityValue\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraFactory.sol\":{\"keccak256\":\"0x1d8cfacb873119cce028428fbfc6741a17f9dff23726b6f9262be38b04d2147d\",\"urls\":[\"bzz-raw://8161eaf5b9b22d8d7bb774f33dd0465b3796decc507f6509d02800052b6da351\",\"dweb:/ipfs/QmWhWSfZqWbx9iBRsV2PB2oEGcV7tgp8TthHH6ZYbN2JCP\"]},\"contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"contracts/periphery/examples/ExampleComputeLiquidityValue.sol\":{\"keccak256\":\"0xc1e4ee2ee7fba6b7e9aa5e2bf397b15a4d5f4cde8dc334cffce119a4b70946c9\",\"urls\":[\"bzz-raw://9015783976e50509fd9f176e183038a3770e87103be26b9167ce9c509b421e49\",\"dweb:/ipfs/QmX1Lt6CRfTbUfWwXiR5hrUwAML8M2HiW2CKKcToioJQrR\"]},\"contracts/periphery/libraries/AstraLibrary.sol\":{\"keccak256\":\"0xae44fd35f2a3c3498de7cbc39ec1f34ac497d62bfa993d07795ae3bc124b2b31\",\"urls\":[\"bzz-raw://637a1e7bb00c545f7ba83851539379085fe791497a5b36cff1dee4a34e0056d9\",\"dweb:/ipfs/QmaFeUq9bYst2tN6zfTNqGW48kACsvXaofZvKtQP4DTqWh\"]},\"contracts/periphery/libraries/AstraLiquidityMathLibrary.sol\":{\"keccak256\":\"0x2fa04eb817510f19683f49215088f372da942f2ee8a5ba617d48bbbfb51652e2\",\"urls\":[\"bzz-raw://98d56b425c47172b4a354be8781143e5d6be099ed06e0ea7a5a1caa9e86edb96\",\"dweb:/ipfs/QmNcaXaL7mpnBCdTTGqPu4M7XZ4HxvFmBEWnQR8Na7Cfsi\"]},\"contracts/periphery/libraries/Babylonian.sol\":{\"keccak256\":\"0xeb1c2a281a00f4660775f75ccfa1e51fbe1d75f86aeb9d0d297151ecdb900177\",\"urls\":[\"bzz-raw://68515f0265381bddfb1d1356ea10ce4e5784276fc09f197fcdcedfa5c75cc069\",\"dweb:/ipfs/QmXWVVPnuJwRUAu3Qpu1s7Fyc5WPQxmZPczVEe5cJ5wVHZ\"]},\"contracts/periphery/libraries/FullMath.sol\":{\"keccak256\":\"0xc4ffcf28169f73fc9fdd1f82345d6d4fcccf3fd5aea83c133437c25e4e0950a9\",\"urls\":[\"bzz-raw://c9257a47501005f0a648bc4801ef4abc33843681aaf03a6d0c43d46b69e37407\",\"dweb:/ipfs/QmciHvDrqhxs5fjsrm9aNq29FZXpunMn17n2wWj83Zsh3B\"]},\"contracts/periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1\",\"urls\":[\"bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c\",\"dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg\"]}},\"version\":1}"}},"contracts/periphery/examples/ExampleFlashSwap.sol":{"ExampleFlashSwap":{"abi":[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_factoryV1","type":"address"},{"internalType":"address","name":"router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"astraCall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e060405234801561001057600080fd5b5060405161122e38038061122e8339818101604052606081101561003357600080fd5b5080516020808301516040938401516001600160601b0319606083811b821660805285901b1660a05284517f90793ea800000000000000000000000000000000000000000000000000000000815294519394919390926001600160a01b038416926390793ea89260048083019392829003018186803b1580156100b557600080fd5b505afa1580156100c9573d6000803e3d6000fd5b505050506040513d60208110156100df57600080fd5b50516001600160601b031960609190911b1660c05250505060805160601c60a05160601c60c05160601c6110d56101596000398061027a52806102af52806102f452806103435280610395528061062b52806106c1528061083d5250806101c352806105e4528061092552508061041652506110d56000f3fe6080604052600436106100225760003560e01c8063ee906f6b1461002e57610029565b3661002957005b600080fd5b34801561003a57600080fd5b506100c76004803603608081101561005157600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561008857600080fd5b82018360208201111561009a57600080fd5b803590602001918460018302840111640100000000831117156100bc57600080fd5b5090925090506100c9565b005b60408051600280825260608083018452926020830190803683370190505090506000806000336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561012757600080fd5b505afa15801561013b573d6000803e3d6000fd5b505050506040513d602081101561015157600080fd5b50516040805163d21220a760e01b81529051919250600091339163d21220a7916004808301926020929190829003018186803b15801561019057600080fd5b505afa1580156101a4573d6000803e3d6000fd5b505050506040513d60208110156101ba57600080fd5b505190506101e97f00000000000000000000000000000000000000000000000000000000000000008383610a81565b6001600160a01b0316336001600160a01b03161461020357fe5b88158061020e575087155b61021457fe5b88156102205780610222565b815b8560008151811061022f57fe5b6001600160a01b039092166020928302919091019091015288156102535781610255565b805b8560018151811061026257fe5b6001600160a01b0392831660209182029290920101527f00000000000000000000000000000000000000000000000000000000000000008116908316146102a957886102ab565b875b93507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146102ec57876102ee565b885b925050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168360008151811061032957fe5b60200260200101516001600160a01b0316148061038b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168360018151811061037857fe5b60200260200101516001600160a01b0316145b61039157fe5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846000815181106103ca57fe5b60200260200101516001600160a01b0316146103fa57836000815181106103ed57fe5b6020026020010151610410565b8360018151811061040757fe5b60200260200101515b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306f2bf62836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561048a57600080fd5b505afa15801561049e573d6000803e3d6000fd5b505050506040513d60208110156104b457600080fd5b505190508315610805576000878760208110156104d057600080fd5b506040805163095ea7b360e01b81526001600160a01b038581166004830152602482018990529151923593509085169163095ea7b3916044808201926020929091908290030181600087803b15801561052857600080fd5b505af115801561053c573d6000803e3d6000fd5b505050506040513d602081101561055257600080fd5b505060408051636186216960e01b81526004810187905260248101839052600019604482015290516000916001600160a01b0385169163618621699160648082019260209290919082900301818787803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b505050506040513d60208110156105d957600080fd5b50519050600061060a7f0000000000000000000000000000000000000000000000000000000000000000888a610b41565b60008151811061061657fe5b6020026020010151905080821161062957fe5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561068457600080fd5b505af1158015610698573d6000803e3d6000fd5b50506040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016945063a9059cbb9350604480830193506020928290030181600087803b15801561070a57600080fd5b505af115801561071e573d6000803e3d6000fd5b505050506040513d602081101561073457600080fd5b505161073c57fe5b604080516000808252602082019092526001600160a01b038f1690838503906040518082805190602001908083835b6020831061078a5780518252601f19909201916020918201910161076b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146107ec576040519150601f19603f3d011682016040523d82523d6000602084013e6107f1565b606091505b50509050806107fc57fe5b50505050610a75565b60008787602081101561081757600080fd5b5060408051632e1a7d4d60e01b8152600481018790529051913592506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691632e1a7d4d9160248082019260009290919082900301818387803b15801561088557600080fd5b505af1158015610899573d6000803e3d6000fd5b505050506000826001600160a01b031663b11c839c86846000196040518463ffffffff1660e01b815260040180838152602001828152602001925050506020604051808303818588803b1580156108ef57600080fd5b505af1158015610903573d6000803e3d6000fd5b50505050506040513d602081101561091a57600080fd5b50519050600061094b7f0000000000000000000000000000000000000000000000000000000000000000878a610b41565b60008151811061095757fe5b6020026020010151905080821161096a57fe5b6040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b0387169163a9059cbb9160448083019260209291908290030181600087803b1580156109b957600080fd5b505af11580156109cd573d6000803e3d6000fd5b505050506040513d60208110156109e357600080fd5b50516109eb57fe5b6040805163a9059cbb60e01b81526001600160a01b038f81166004830152838503602483015291519187169163a9059cbb916044808201926020929091908290030181600087803b158015610a3f57600080fd5b505af1158015610a53573d6000803e3d6000fd5b505050506040513d6020811015610a6957600080fd5b5051610a7157fe5b5050505b50505050505050505050565b6000806000610a908585610c8e565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6060600282511015610b9a576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff81118015610bb257600080fd5b50604051908082528060200260200182016040528015610bdc578160200160208202803683370190505b5090508281600183510381518110610bf057fe5b60209081029190910101528151600019015b8015610c8657600080610c3f87866001860381518110610c1e57fe5b6020026020010151878681518110610c3257fe5b6020026020010151610d6c565b91509150610c61848481518110610c5257fe5b60200260200101518383610e3a565b846001850381518110610c7057fe5b6020908102919091010152505060001901610c02565b509392505050565b600080826001600160a01b0316846001600160a01b03161415610ce25760405162461bcd60e51b81526004018080602001828103825260218152602001806110336021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610610d02578284610d05565b83835b90925090506001600160a01b038216610d65576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b6000806000610d7b8585610c8e565b509050600080610d8c888888610a81565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610dc457600080fd5b505afa158015610dd8573d6000803e3d6000fd5b505050506040513d6060811015610dee57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614610e28578082610e2b565b81815b90999098509650505050505050565b6000808411610e7a5760405162461bcd60e51b81526004018080602001828103825260288152602001806110546028913960400191505060405180910390fd5b600083118015610e8a5750600082115b610ec55760405162461bcd60e51b815260040180806020018281038252602481526020018061107c6024913960400191505060405180910390fd5b6000610ee96103e8610edd868863ffffffff610f2a16565b9063ffffffff610f2a16565b90506000610f036103e5610edd868963ffffffff610f9316565b9050610f206001828481610f1357fe5b049063ffffffff610fe316565b9695505050505050565b6000811580610f4557505080820282828281610f4257fe5b04145b610f8d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b80820382811115610f8d576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b80820182811015610f8d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe41737472614c6962726172793a204944454e544943414c5f41444452455353455341737472614c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5441737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459a26469706673582212205dc1c8612f6f75002d08b239afb16025cd8e3edf334a119ceae04c27f7ef094064736f6c63430006060033","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x122E CODESIZE SUB DUP1 PUSH2 0x122E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP4 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP4 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP6 SWAP1 SHL AND PUSH1 0xA0 MSTORE DUP5 MLOAD PUSH32 0x90793EA800000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP5 MLOAD SWAP4 SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP3 PUSH4 0x90793EA8 SWAP3 PUSH1 0x4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP2 SWAP1 SWAP2 SHL AND PUSH1 0xC0 MSTORE POP POP POP PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x10D5 PUSH2 0x159 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x27A MSTORE DUP1 PUSH2 0x2AF MSTORE DUP1 PUSH2 0x2F4 MSTORE DUP1 PUSH2 0x343 MSTORE DUP1 PUSH2 0x395 MSTORE DUP1 PUSH2 0x62B MSTORE DUP1 PUSH2 0x6C1 MSTORE DUP1 PUSH2 0x83D MSTORE POP DUP1 PUSH2 0x1C3 MSTORE DUP1 PUSH2 0x5E4 MSTORE DUP1 PUSH2 0x925 MSTORE POP DUP1 PUSH2 0x416 MSTORE POP PUSH2 0x10D5 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x22 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEE906F6B EQ PUSH2 0x2E JUMPI PUSH2 0x29 JUMP JUMPDEST CALLDATASIZE PUSH2 0x29 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xC9 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 CALLER SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1E9 PUSH32 0x0 DUP4 DUP4 PUSH2 0xA81 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x203 JUMPI INVALID JUMPDEST DUP9 ISZERO DUP1 PUSH2 0x20E JUMPI POP DUP8 ISZERO JUMPDEST PUSH2 0x214 JUMPI INVALID JUMPDEST DUP9 ISZERO PUSH2 0x220 JUMPI DUP1 PUSH2 0x222 JUMP JUMPDEST DUP2 JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x22F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP9 ISZERO PUSH2 0x253 JUMPI DUP2 PUSH2 0x255 JUMP JUMPDEST DUP1 JUMPDEST DUP6 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x262 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH32 0x0 DUP2 AND SWAP1 DUP4 AND EQ PUSH2 0x2A9 JUMPI DUP9 PUSH2 0x2AB JUMP JUMPDEST DUP8 JUMPDEST SWAP4 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2EC JUMPI DUP8 PUSH2 0x2EE JUMP JUMPDEST DUP9 JUMPDEST SWAP3 POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x329 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x38B JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x378 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x391 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3CA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3FA JUMPI DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3ED JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x410 JUMP JUMPDEST DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x407 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F2BF62 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x49E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP4 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP8 DUP8 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE SWAP2 MLOAD SWAP3 CALLDATALOAD SWAP4 POP SWAP1 DUP6 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x53C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x61862169 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 NOT PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x61862169 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x60A PUSH32 0x0 DUP9 DUP11 PUSH2 0xB41 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x616 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 DUP3 GT PUSH2 0x629 JUMPI INVALID JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x684 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x698 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP5 POP PUSH4 0xA9059CBB SWAP4 POP PUSH1 0x44 DUP1 DUP4 ADD SWAP4 POP PUSH1 0x20 SWAP3 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x70A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x71E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x73C JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND SWAP1 DUP4 DUP6 SUB SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x78A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x76B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7EC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7F1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x7FC JUMPI INVALID JUMPDEST POP POP POP POP PUSH2 0xA75 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP8 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 CALLDATALOAD SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x2E1A7D4D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x899 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB11C839C DUP7 DUP5 PUSH1 0x0 NOT PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x903 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x91A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x94B PUSH32 0x0 DUP8 DUP11 PUSH2 0xB41 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x957 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 DUP3 GT PUSH2 0x96A JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x9EB JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP4 DUP6 SUB PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP8 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA53 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xA71 JUMPI INVALID JUMPDEST POP POP POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA90 DUP6 DUP6 PUSH2 0xC8E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0xB9A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A20494E56414C49445F50415448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xBB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBDC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xBF0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH1 0x0 NOT ADD JUMPDEST DUP1 ISZERO PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 PUSH2 0xC3F DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0xC1E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0xC32 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xD6C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xC61 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC52 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0xE3A JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0xC70 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x0 NOT ADD PUSH2 0xC02 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1033 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xD02 JUMPI DUP3 DUP5 PUSH2 0xD05 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xD65 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD7B DUP6 DUP6 PUSH2 0xC8E JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0xD8C DUP9 DUP9 DUP9 PUSH2 0xA81 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0xE28 JUMPI DUP1 DUP3 PUSH2 0xE2B JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0xE7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1054 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0xE8A JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0xEC5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x107C PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xEE9 PUSH2 0x3E8 PUSH2 0xEDD DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0xF2A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF2A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF03 PUSH2 0x3E5 PUSH2 0xEDD DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0xF93 AND JUMP JUMPDEST SWAP1 POP PUSH2 0xF20 PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0xF13 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xFE3 AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xF45 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xF42 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6D756C2D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D 0xC1 0xC8 PUSH2 0x2F6F PUSH22 0x2D08B239AFB16025CD8E3EDF334A119CEAE04C27F7 0xEF MULMOD BLOCKHASH PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"323:3341:7:-:0;;;470:210;5:9:-1;2:2;;;27:1;24;17:12;2:2;470:210:7;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;470:210:7;;;;;;;;;;;;-1:-1:-1;;;;;;470:210:7;553:39;;;;;;;602:18;;;;;;643:29;;;;;;;470:210;;;;;;-1:-1:-1;;;;;643:27:7;;;;;:29;;;;;470:210;643:29;;;;;:27;:29;;;2:2:-1;;;;27:1;24;17:12;2:2;643:29:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;643:29:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;643:29:7;-1:-1:-1;;;;;;630:43:7;;;;;;;;-1:-1:-1;;;323:3341:7;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"4132":[{"length":32,"start":1046}],"4134":[{"length":32,"start":451},{"length":32,"start":1508},{"length":32,"start":2341}],"4136":[{"length":32,"start":634},{"length":32,"start":687},{"length":32,"start":756},{"length":32,"start":835},{"length":32,"start":917},{"length":32,"start":1579},{"length":32,"start":1729},{"length":32,"start":2109}]},"linkReferences":{},"object":"6080604052600436106100225760003560e01c8063ee906f6b1461002e57610029565b3661002957005b600080fd5b34801561003a57600080fd5b506100c76004803603608081101561005157600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561008857600080fd5b82018360208201111561009a57600080fd5b803590602001918460018302840111640100000000831117156100bc57600080fd5b5090925090506100c9565b005b60408051600280825260608083018452926020830190803683370190505090506000806000336001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561012757600080fd5b505afa15801561013b573d6000803e3d6000fd5b505050506040513d602081101561015157600080fd5b50516040805163d21220a760e01b81529051919250600091339163d21220a7916004808301926020929190829003018186803b15801561019057600080fd5b505afa1580156101a4573d6000803e3d6000fd5b505050506040513d60208110156101ba57600080fd5b505190506101e97f00000000000000000000000000000000000000000000000000000000000000008383610a81565b6001600160a01b0316336001600160a01b03161461020357fe5b88158061020e575087155b61021457fe5b88156102205780610222565b815b8560008151811061022f57fe5b6001600160a01b039092166020928302919091019091015288156102535781610255565b805b8560018151811061026257fe5b6001600160a01b0392831660209182029290920101527f00000000000000000000000000000000000000000000000000000000000000008116908316146102a957886102ab565b875b93507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316146102ec57876102ee565b885b925050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168360008151811061032957fe5b60200260200101516001600160a01b0316148061038b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168360018151811061037857fe5b60200260200101516001600160a01b0316145b61039157fe5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846000815181106103ca57fe5b60200260200101516001600160a01b0316146103fa57836000815181106103ed57fe5b6020026020010151610410565b8360018151811061040757fe5b60200260200101515b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306f2bf62836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561048a57600080fd5b505afa15801561049e573d6000803e3d6000fd5b505050506040513d60208110156104b457600080fd5b505190508315610805576000878760208110156104d057600080fd5b506040805163095ea7b360e01b81526001600160a01b038581166004830152602482018990529151923593509085169163095ea7b3916044808201926020929091908290030181600087803b15801561052857600080fd5b505af115801561053c573d6000803e3d6000fd5b505050506040513d602081101561055257600080fd5b505060408051636186216960e01b81526004810187905260248101839052600019604482015290516000916001600160a01b0385169163618621699160648082019260209290919082900301818787803b1580156105af57600080fd5b505af11580156105c3573d6000803e3d6000fd5b505050506040513d60208110156105d957600080fd5b50519050600061060a7f0000000000000000000000000000000000000000000000000000000000000000888a610b41565b60008151811061061657fe5b6020026020010151905080821161062957fe5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561068457600080fd5b505af1158015610698573d6000803e3d6000fd5b50506040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016945063a9059cbb9350604480830193506020928290030181600087803b15801561070a57600080fd5b505af115801561071e573d6000803e3d6000fd5b505050506040513d602081101561073457600080fd5b505161073c57fe5b604080516000808252602082019092526001600160a01b038f1690838503906040518082805190602001908083835b6020831061078a5780518252601f19909201916020918201910161076b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146107ec576040519150601f19603f3d011682016040523d82523d6000602084013e6107f1565b606091505b50509050806107fc57fe5b50505050610a75565b60008787602081101561081757600080fd5b5060408051632e1a7d4d60e01b8152600481018790529051913592506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691632e1a7d4d9160248082019260009290919082900301818387803b15801561088557600080fd5b505af1158015610899573d6000803e3d6000fd5b505050506000826001600160a01b031663b11c839c86846000196040518463ffffffff1660e01b815260040180838152602001828152602001925050506020604051808303818588803b1580156108ef57600080fd5b505af1158015610903573d6000803e3d6000fd5b50505050506040513d602081101561091a57600080fd5b50519050600061094b7f0000000000000000000000000000000000000000000000000000000000000000878a610b41565b60008151811061095757fe5b6020026020010151905080821161096a57fe5b6040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b0387169163a9059cbb9160448083019260209291908290030181600087803b1580156109b957600080fd5b505af11580156109cd573d6000803e3d6000fd5b505050506040513d60208110156109e357600080fd5b50516109eb57fe5b6040805163a9059cbb60e01b81526001600160a01b038f81166004830152838503602483015291519187169163a9059cbb916044808201926020929091908290030181600087803b158015610a3f57600080fd5b505af1158015610a53573d6000803e3d6000fd5b505050506040513d6020811015610a6957600080fd5b5051610a7157fe5b5050505b50505050505050505050565b6000806000610a908585610c8e565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6060600282511015610b9a576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a20494e56414c49445f50415448000000000000604482015290519081900360640190fd5b815167ffffffffffffffff81118015610bb257600080fd5b50604051908082528060200260200182016040528015610bdc578160200160208202803683370190505b5090508281600183510381518110610bf057fe5b60209081029190910101528151600019015b8015610c8657600080610c3f87866001860381518110610c1e57fe5b6020026020010151878681518110610c3257fe5b6020026020010151610d6c565b91509150610c61848481518110610c5257fe5b60200260200101518383610e3a565b846001850381518110610c7057fe5b6020908102919091010152505060001901610c02565b509392505050565b600080826001600160a01b0316846001600160a01b03161415610ce25760405162461bcd60e51b81526004018080602001828103825260218152602001806110336021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610610d02578284610d05565b83835b90925090506001600160a01b038216610d65576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b6000806000610d7b8585610c8e565b509050600080610d8c888888610a81565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610dc457600080fd5b505afa158015610dd8573d6000803e3d6000fd5b505050506040513d6060811015610dee57600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b0387811690841614610e28578082610e2b565b81815b90999098509650505050505050565b6000808411610e7a5760405162461bcd60e51b81526004018080602001828103825260288152602001806110546028913960400191505060405180910390fd5b600083118015610e8a5750600082115b610ec55760405162461bcd60e51b815260040180806020018281038252602481526020018061107c6024913960400191505060405180910390fd5b6000610ee96103e8610edd868863ffffffff610f2a16565b9063ffffffff610f2a16565b90506000610f036103e5610edd868963ffffffff610f9316565b9050610f206001828481610f1357fe5b049063ffffffff610fe316565b9695505050505050565b6000811580610f4557505080820282828281610f4257fe5b04145b610f8d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b80820382811115610f8d576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b80820182811015610f8d576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe41737472614c6962726172793a204944454e544943414c5f41444452455353455341737472614c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5441737472614c6962726172793a20494e53554646494349454e545f4c4951554944495459a26469706673582212205dc1c8612f6f75002d08b239afb16025cd8e3edf334a119ceae04c27f7ef094064736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x22 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xEE906F6B EQ PUSH2 0x2E JUMPI PUSH2 0x29 JUMP JUMPDEST CALLDATASIZE PUSH2 0x29 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xC9 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x13B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x151 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xD21220A7 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 CALLER SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x190 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1A4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH2 0x1E9 PUSH32 0x0 DUP4 DUP4 PUSH2 0xA81 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x203 JUMPI INVALID JUMPDEST DUP9 ISZERO DUP1 PUSH2 0x20E JUMPI POP DUP8 ISZERO JUMPDEST PUSH2 0x214 JUMPI INVALID JUMPDEST DUP9 ISZERO PUSH2 0x220 JUMPI DUP1 PUSH2 0x222 JUMP JUMPDEST DUP2 JUMPDEST DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x22F JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP9 ISZERO PUSH2 0x253 JUMPI DUP2 PUSH2 0x255 JUMP JUMPDEST DUP1 JUMPDEST DUP6 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x262 JUMPI INVALID JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x20 SWAP2 DUP3 MUL SWAP3 SWAP1 SWAP3 ADD ADD MSTORE PUSH32 0x0 DUP2 AND SWAP1 DUP4 AND EQ PUSH2 0x2A9 JUMPI DUP9 PUSH2 0x2AB JUMP JUMPDEST DUP8 JUMPDEST SWAP4 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2EC JUMPI DUP8 PUSH2 0x2EE JUMP JUMPDEST DUP9 JUMPDEST SWAP3 POP POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x329 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x38B JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x378 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x391 JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3CA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3FA JUMPI DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3ED JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x410 JUMP JUMPDEST DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x407 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x6F2BF62 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x48A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x49E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP DUP4 ISZERO PUSH2 0x805 JUMPI PUSH1 0x0 DUP8 DUP8 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH1 0x24 DUP3 ADD DUP10 SWAP1 MSTORE SWAP2 MLOAD SWAP3 CALLDATALOAD SWAP4 POP SWAP1 DUP6 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x53C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x552 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x61862169 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 NOT PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x61862169 SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP8 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5C3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x60A PUSH32 0x0 DUP9 DUP11 PUSH2 0xB41 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x616 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 DUP3 GT PUSH2 0x629 JUMPI INVALID JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x684 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x698 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP5 POP PUSH4 0xA9059CBB SWAP4 POP PUSH1 0x44 DUP1 DUP4 ADD SWAP4 POP PUSH1 0x20 SWAP3 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x70A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x71E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x734 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x73C JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 AND SWAP1 DUP4 DUP6 SUB SWAP1 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x78A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x76B JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7EC JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7F1 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x7FC JUMPI INVALID JUMPDEST POP POP POP POP PUSH2 0xA75 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP8 PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x817 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP2 CALLDATALOAD SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x2E1A7D4D SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x885 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x899 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xB11C839C DUP7 DUP5 PUSH1 0x0 NOT PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x903 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x91A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x94B PUSH32 0x0 DUP8 DUP11 PUSH2 0xB41 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x957 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 DUP3 GT PUSH2 0x96A JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x9CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0x9EB JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP16 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP4 DUP6 SUB PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 DUP8 AND SWAP2 PUSH4 0xA9059CBB SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xA3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xA53 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH2 0xA71 JUMPI INVALID JUMPDEST POP POP POP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA90 DUP6 DUP6 PUSH2 0xC8E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 MLOAD LT ISZERO PUSH2 0xB9A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A20494E56414C49445F50415448000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xBB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xBDC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP3 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0xBF0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP2 MLOAD PUSH1 0x0 NOT ADD JUMPDEST DUP1 ISZERO PUSH2 0xC86 JUMPI PUSH1 0x0 DUP1 PUSH2 0xC3F DUP8 DUP7 PUSH1 0x1 DUP7 SUB DUP2 MLOAD DUP2 LT PUSH2 0xC1E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0xC32 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xD6C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0xC61 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC52 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0xE3A JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0xC70 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x0 NOT ADD PUSH2 0xC02 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xCE2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1033 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xD02 JUMPI DUP3 DUP5 PUSH2 0xD05 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xD65 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xD7B DUP6 DUP6 PUSH2 0xC8E JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0xD8C DUP9 DUP9 DUP9 PUSH2 0xA81 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0xE28 JUMPI DUP1 DUP3 PUSH2 0xE2B JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0xE7A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1054 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0xE8A JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0xEC5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x107C PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xEE9 PUSH2 0x3E8 PUSH2 0xEDD DUP7 DUP9 PUSH4 0xFFFFFFFF PUSH2 0xF2A AND JUMP JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xF2A AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF03 PUSH2 0x3E5 PUSH2 0xEDD DUP7 DUP10 PUSH4 0xFFFFFFFF PUSH2 0xF93 AND JUMP JUMPDEST SWAP1 POP PUSH2 0xF20 PUSH1 0x1 DUP3 DUP5 DUP2 PUSH2 0xF13 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xFE3 AND JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xF45 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xF42 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6D756C2D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0xF8D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD COINBASE PUSH20 0x7472614C6962726172793A20494E535546464943 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D 0xC1 0xC8 PUSH2 0x2F6F PUSH22 0x2D08B239AFB16025CD8E3EDF334A119CEAE04C27F7 0xEF MULMOD BLOCKHASH PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"323:3341:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1037:2625:7;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1037:2625:7;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;1037:2625:7;;;;;;;;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;1037:2625:7;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1037:2625:7;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1037:2625:7;;-1:-1:-1;1037:2625:7;-1:-1:-1;1037:2625:7;:::i;:::-;;;1173:16;;;1187:1;1173:16;;;1149:21;1173:16;;;;;1149:21;1173:16;;;;;109:14:-1;1173:16:7;88:42:-1;144:17;;-1:-1;1173:16:7;1149:40;;1199:16;1225:14;1313;1341:10;-1:-1:-1;;;;;1330:29:7;;:31;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1330:31:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1330:31:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1330:31:7;1388;;;-1:-1:-1;;;1388:31:7;;;;1330;;-1:-1:-1;1371:14:7;;1399:10;;1388:29;;:31;;;;;1330;;1388;;;;;;;1399:10;1388:31;;;2:2:-1;;;;27:1;24;17:12;2:2;1388:31:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1388:31:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1388:31:7;;-1:-1:-1;1450:45:7;1471:7;1480:6;1388:31;1450:20;:45::i;:::-;-1:-1:-1;;;;;1436:59:7;:10;-1:-1:-1;;;;;1436:59:7;;1429:67;;;;1561:12;;;:28;;-1:-1:-1;1577:12:7;;1561:28;1554:36;;;;1645:12;;:30;;1669:6;1645:30;;;1660:6;1645:30;1635:4;1640:1;1635:7;;;;;;;;-1:-1:-1;;;;;1635:40:7;;;:7;;;;;;;;;;;:40;1695:12;;:30;;1719:6;1695:30;;;1710:6;1695:30;1685:4;1690:1;1685:7;;;;;;;;-1:-1:-1;;;;;1685:40:7;;;:7;;;;;;;;;:40;1767:4;1749:23;;;;;;:43;;1785:7;1749:43;;;1775:7;1749:43;1735:57;;1832:4;-1:-1:-1;;;;;1814:23:7;:6;-1:-1:-1;;;;;1814:23:7;;:43;;1850:7;1814:43;;;1840:7;1814:43;1802:55;;1037:2625;;1904:4;-1:-1:-1;;;;;1885:24:7;:4;1890:1;1885:7;;;;;;;;;;;;;;-1:-1:-1;;;;;1885:24:7;;:52;;;;1932:4;-1:-1:-1;;;;;1913:24:7;:4;1918:1;1913:7;;;;;;;;;;;;;;-1:-1:-1;;;;;1913:24:7;;1885:52;1878:60;;;;1996:12;2037:4;-1:-1:-1;;;;;2018:24:7;:4;2023:1;2018:7;;;;;;;;;;;;;;-1:-1:-1;;;;;2018:24:7;;:44;;2055:4;2060:1;2055:7;;;;;;;;;;;;;;2018:44;;;2045:4;2050:1;2045:7;;;;;;;;;;;;;;2018:44;1996:67;;2073:27;2120:9;-1:-1:-1;;;;;2120:21:7;;2150:5;2120:37;;;;;;;;;;;;;-1:-1:-1;;;;;2120:37:7;-1:-1:-1;;;;;2120:37:7;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2120:37:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2120:37:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2120:37:7;;-1:-1:-1;2192:15:7;;2188:1468;;2224:11;2250:4;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2327:47:7;;;-1:-1:-1;;;2327:47:7;;-1:-1:-1;;;;;2327:47:7;;;;;;;;;;;;;;;2239:24;;;-1:-1:-1;2327:13:7;;;;;;:47;;;;;2239:24;;2327:47;;;;;;;;-1:-1:-1;2327:13:7;:47;;;2:2:-1;;;;27:1;24;17:12;2:2;2327:47:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2327:47:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;2410:61:7;;;-1:-1:-1;;;2410:61:7;;;;;;;;;;;;;;-1:-1:-1;;2410:61:7;;;;;;2388:19;;-1:-1:-1;;;;;2410:30:7;;;;;:61;;;;;2327:47;;2410:61;;;;;;;;2388:19;2410:30;:61;;;2:2:-1;;;;27:1;24;17:12;2:2;2410:61:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2410:61:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2410:61:7;;-1:-1:-1;2485:19:7;2507:53;2533:7;2542:11;2555:4;2507:25;:53::i;:::-;2561:1;2507:56;;;;;;;;;;;;;;2485:78;;2601:14;2584;:31;2577:39;;;;2695:4;-1:-1:-1;;;;;2695:12:7;;2715:14;2695:37;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2695:37:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2753:41:7;;;-1:-1:-1;;;2753:41:7;;2767:10;2753:41;;;;;;;;;;;;-1:-1:-1;;;;;2753:4:7;:13;;-1:-1:-1;2753:13:7;;-1:-1:-1;2753:41:7;;;;;-1:-1:-1;2753:41:7;;;;;;;-1:-1:-1;2753:13:7;:41;;;2:2:-1;;;;27:1;24;17:12;2:2;2753:41:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2753:41:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2753:41:7;2746:49;;;;2905:12;;;2836;2905;;;;;;;;;-1:-1:-1;;;;;2853:11:7;;;2872:31;;;;2853:65;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2853:65:7;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;2835:83:7;;;2963:7;2956:15;;;;2188:1468;;;;;;;3003:14;3032:4;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3109:24:7;;;-1:-1:-1;;;3109:24:7;;;;;;;;;;3021;;;-1:-1:-1;;;;;;3109:4:7;:13;;;;:24;;;;;-1:-1:-1;;3109:24:7;;;;;;;;-1:-1:-1;3109:13:7;:24;;;2:2:-1;;;;27:1;24;17:12;2:2;3109:24:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3109:24:7;;;;3147:19;3169:10;-1:-1:-1;;;;;3169:30:7;;3207:9;3218;-1:-1:-1;;3169:69:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3169:69:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3169:69:7;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3169:69:7;;-1:-1:-1;3252:19:7;3274:51;3300:7;3309:9;3320:4;3274:25;:51::i;:::-;3326:1;3274:54;;;;;;;;;;;;;;3252:76;;3366:14;3349;:31;3342:39;;;;3470:42;;;-1:-1:-1;;;3470:42:7;;3485:10;3470:42;;;;;;;;;;;;-1:-1:-1;;;;;3470:14:7;;;;;:42;;;;;;;;;;;;;;-1:-1:-1;3470:14:7;:42;;;2:2:-1;;;;27:1;24;17:12;2:2;3470:42:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3470:42:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3470:42:7;3463:50;;;;3562:55;;;-1:-1:-1;;;3562:55:7;;-1:-1:-1;;;;;3562:55:7;;;;;;;3585:31;;;3562:55;;;;;;:14;;;;;;:55;;;;;;;;;;;;;;;-1:-1:-1;3562:14:7;:55;;;2:2:-1;;;;27:1;24;17:12;2:2;3562:55:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3562:55:7;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;3562:55:7;3555:63;;;;2188:1468;;;;1037:2625;;;;;;;;;;:::o;738:633:18:-;857:12;882:14;898;916:26;927:6;935;916:10;:26::i;:::-;1154:32;;;-1:-1:-1;;1154:32:18;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1154:32:18;;;;;1144:43;;;;;;-1:-1:-1;;;;;;1036:286:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1036:286:18;;;;;;;1005:335;;;;;;;;;738:633;-1:-1:-1;;;;;738:633:18:o;4524:630::-;4658:24;4717:1;4702:4;:11;:16;;4694:55;;;;;-1:-1:-1;;;4694:55:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;4783:4;:11;4769:26;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4769:26:18;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;4769:26:18;;4759:36;;4835:9;4805:7;4830:1;4813:7;:14;:18;4805:27;;;;;;;;;;;;;;;;;:39;4871:11;;-1:-1:-1;;4871:15:18;4854:294;4888:5;;4854:294;;4915:17;4934:18;4956:104;4985:7;5010:4;5019:1;5015;:5;5010:11;;;;;;;;;;;;;;5039:4;5044:1;5039:7;;;;;;;;;;;;;;4956:11;:104::i;:::-;4914:146;;;;5091:46;5103:7;5111:1;5103:10;;;;;;;;;;;;;;5115:9;5126:10;5091:11;:46::i;:::-;5074:7;5086:1;5082;:5;5074:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;;;4895:3:18;4854:294;;;;4524:630;;;;;:::o;260:389::-;359:14;375;423:6;-1:-1:-1;;;;;413:16:18;:6;-1:-1:-1;;;;;413:16:18;;;405:62;;;;-1:-1:-1;;;405:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:6;-1:-1:-1;;;;;496:15:18;:6;-1:-1:-1;;;;;496:15:18;;:77;;558:6;566;496:77;;;527:6;535;496:77;477:96;;-1:-1:-1;477:96:18;-1:-1:-1;;;;;;591:20:18;;583:59;;;;;-1:-1:-1;;;583:59:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;260:389;;;;;:::o;1426:473::-;1549:16;1567;1596:14;1616:26;1627:6;1635;1616:10;:26::i;:::-;1595:47;;;1653:16;1671;1717:32;1725:7;1734:6;1742;1717:7;:32::i;:::-;-1:-1:-1;;;;;1693:78:18;;:80;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1693:80:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1693:80:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1693:80:18;;;;;;;1652:121;;;;;-1:-1:-1;1652:121:18;;-1:-1:-1;;;;;;1806:16:18;;;;;;;:86;;1873:8;1883;1806:86;;;1838:8;1848;1806:86;1783:109;;;;-1:-1:-1;1426:473:18;-1:-1:-1;;;;;;;1426:473:18:o;3218:540::-;3350:16;3398:1;3386:9;:13;3378:66;;;;-1:-1:-1;;;3378:66:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3487:1;3475:9;:13;:31;;;;;3505:1;3492:10;:14;3475:31;3454:114;;;;-1:-1:-1;;;3454:114:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3578:17;3598:34;3627:4;3598:24;:9;3612;3598:24;:13;:24;:::i;:::-;:28;:34;:28;:34;:::i;:::-;3578:54;-1:-1:-1;3642:19:18;3664:34;3694:3;3664:25;:10;3679:9;3664:25;:14;:25;:::i;:34::-;3642:56;;3719:32;3749:1;3732:11;3720:9;:23;;;;;;;3719:32;:29;:32;:::i;:::-;3708:43;3218:540;-1:-1:-1;;;;;;3218:540:18:o;419:140:25:-;471:6;497;;;:30;;-1:-1:-1;;512:5:25;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;-1:-1:-1;;;489:63:25;;;;;;;;;;;;-1:-1:-1;;;489:63:25;;;;;;;;;;;;;;;419:140;;;;:::o;286:127::-;369:5;;;364:16;;;;356:50;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;;;154:126;237:5;;;232:16;;;;224:49;;;;;-1:-1:-1;;;224:49:25;;;;;;;;;;;;-1:-1:-1;;;224:49:25;;;;;;;;;;;;;"},"methodIdentifiers":{"astraCall(address,uint256,uint256,bytes)":"ee906f6b"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_factoryV1\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"astraCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/examples/ExampleFlashSwap.sol\":\"ExampleFlashSwap\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraCallee.sol\":{\"keccak256\":\"0xf5d820076bb4d5760e8e8370c9527a2b2f41e890abbfd3f33dd84081bc75eaf4\",\"urls\":[\"bzz-raw://802e26558411dccbe8f716957fa42d240edb1b7750fab48c844179c2a5e42ff0\",\"dweb:/ipfs/QmacHZo2nvJWxD9tbfmNTf3keLAMH9QB5TXrSwhEFQiGpG\"]},\"contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"contracts/periphery/examples/ExampleFlashSwap.sol\":{\"keccak256\":\"0xc3a1de52b9fb79eb3d7f7eac26fd28e951c84676a5d28ec20e895f806c13aa56\",\"urls\":[\"bzz-raw://093224fc889c83e9d8fc0b4c2108b5e1c574ade766dc1c637292ed806a2db611\",\"dweb:/ipfs/Qmcf7v8PRwh9xPpZc1v8qRoa6hA61yhkXo3S8pnK5zdo94\"]},\"contracts/periphery/interfaces/IAstraRouter01.sol\":{\"keccak256\":\"0x41f94bb4b263f1a0a17e4ca169a7057ecc6d9ff5f575c9047a57e062f7680708\",\"urls\":[\"bzz-raw://d5e155912a41505ccd8702dabc77193fb0bb0601cc0b3efc447aefa98b3a9699\",\"dweb:/ipfs/Qmaev2znL8F5UWbiZJMe124SATkzmrQz4kB5uEeBKyU5iZ\"]},\"contracts/periphery/interfaces/IERC20.sol\":{\"keccak256\":\"0x61db17aebc5d812c7002d15c1da954065e56abe49d64b14c034abe5604d70eb3\",\"urls\":[\"bzz-raw://b006685e753f9120469f10b09c159f222d4cb8b507a6c1f0c14ed50c883ebe66\",\"dweb:/ipfs/QmSyY7iTugbczPwfGK67etiyPULenYGzzRYbt8aabwwkUb\"]},\"contracts/periphery/interfaces/ISAMB.sol\":{\"keccak256\":\"0xaa6bcbe5a4eda8bed6cb5c2779b1607bfb5e2aa026729ab120e59ec3c93d65c1\",\"urls\":[\"bzz-raw://6741ee95b1b38a1fd9b541eaadebbf81ffa7787049d00ebe410d2126964e3cb2\",\"dweb:/ipfs/QmSchE668jWboooBDstjTNMKuk8f6wgVQWibhXBTTsGDsF\"]},\"contracts/periphery/interfaces/V1/IAstraV1Exchange.sol\":{\"keccak256\":\"0x98b4fc0788e0c690dc9f32086c4f3dec01d0bacead9463f302f61794f9d01baf\",\"urls\":[\"bzz-raw://188f6931c695a854ebefae8aca7bba7a0f401303a91e309991ce00a12e75a509\",\"dweb:/ipfs/QmUVQheF7zE8qGdUZfdmiceGkhpCGbS224TGLFggLGN7Aw\"]},\"contracts/periphery/interfaces/V1/IAstraV1Factory.sol\":{\"keccak256\":\"0x4116b464fdb13158f841346fad13b237dc6498d9db48ffab3f5ebe707e256ee7\",\"urls\":[\"bzz-raw://0203c6ca28866e670b226ac448801e8caee73b554a3106c81eb0a270317b9723\",\"dweb:/ipfs/QmeNTHK7vtHJB2PaqiCZmpvNMB9ZttE2HNBVFd6FrMK7DE\"]},\"contracts/periphery/libraries/AstraLibrary.sol\":{\"keccak256\":\"0xae44fd35f2a3c3498de7cbc39ec1f34ac497d62bfa993d07795ae3bc124b2b31\",\"urls\":[\"bzz-raw://637a1e7bb00c545f7ba83851539379085fe791497a5b36cff1dee4a34e0056d9\",\"dweb:/ipfs/QmaFeUq9bYst2tN6zfTNqGW48kACsvXaofZvKtQP4DTqWh\"]},\"contracts/periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1\",\"urls\":[\"bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c\",\"dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg\"]}},\"version\":1}"}},"contracts/periphery/examples/ExampleOracleSimple.sol":{"ExampleOracleSimple":{"abi":[{"inputs":[{"internalType":"address","name":"factory","type":"address"},{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockTimestampLast","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"name":"consult","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price0Average","outputs":[{"internalType":"uint224","name":"_x","type":"uint224"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1Average","outputs":[{"internalType":"uint224","name":"_x","type":"uint224"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"update","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60e06040523480156200001157600080fd5b506040516200129738038062001297833981810160405260608110156200003757600080fd5b508051602080830151604090930151919291906000906200006790859085908590620009e3620003fb821b17901c565b9050806001600160a01b03166080816001600160a01b031660601b81525050806001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620000c057600080fd5b505afa158015620000d5573d6000803e3d6000fd5b505050506040513d6020811015620000ec57600080fd5b505160601b6001600160601b03191660a052604080517fd21220a700000000000000000000000000000000000000000000000000000000815290516001600160a01b0383169163d21220a7916004808301926020929190829003018186803b1580156200015857600080fd5b505afa1580156200016d573d6000803e3d6000fd5b505050506040513d60208110156200018457600080fd5b505160601b6001600160601b03191660c052604080517f5909c0d500000000000000000000000000000000000000000000000000000000815290516001600160a01b03831691635909c0d5916004808301926020929190829003018186803b158015620001f057600080fd5b505afa15801562000205573d6000803e3d6000fd5b505050506040513d60208110156200021c57600080fd5b5051600055604080517f5a3d549300000000000000000000000000000000000000000000000000000000815290516001600160a01b03831691635a3d5493916004808301926020929190829003018186803b1580156200027b57600080fd5b505afa15801562000290573d6000803e3d6000fd5b505050506040513d6020811015620002a757600080fd5b5051600155604080517f0902f1ac000000000000000000000000000000000000000000000000000000008152905160009182916001600160a01b03851691630902f1ac916004808301926060929190829003018186803b1580156200030b57600080fd5b505afa15801562000320573d6000803e3d6000fd5b505050506040513d60608110156200033757600080fd5b50805160208201516040909201516002805463ffffffff191663ffffffff909216919091179055925090506001600160701b038216158015906200038357506001600160701b03811615155b620003ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4578616d706c654f7261636c6553696d706c653a204e4f5f5245534552564553604482015290519081900360640190fd5b505050505050620005ef565b600080806200041485856001600160e01b03620004d816565b604080516001600160601b0319606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080826001600160a01b0316846001600160a01b0316141562000548576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620012766021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b0316106200056a5782846200056d565b83835b90925090506001600160a01b038216620005e857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b60805160601c60a05160601c60c05160601c610c476200062f60003980610220528061044452508061017e52806101a45250806102f25250610c476000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a2e6204511610066578063a2e6204514610139578063a6bb453914610143578063b4d1d7951461014b578063c5700a0214610153578063d21220a7146101745761009e565b80630dfe1681146100a35780633ddac953146100c75780635909c0d5146101055780635a3d54931461010d5780635e6aaf2c14610115575b600080fd5b6100ab61017c565b604080516001600160a01b039092168252519081900360200190f35b6100f3600480360360408110156100dd57600080fd5b506001600160a01b0381351690602001356101a0565b60408051918252519081900360200190f35b6100f36102cd565b6100f36102d3565b61011d6102d9565b604080516001600160e01b039092168252519081900360200190f35b6101416102e8565b005b61011d610420565b6100f361042f565b61015b610436565b6040805163ffffffff9092168252519081900360200190f35b6100ab610442565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561021e5760408051602081019091526003546001600160e01b0316815261020e90610209908463ffffffff61046616565b6104fa565b6001600160901b031690506102c7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161461028e5760405162461bcd60e51b8152600401808060200182810382526022815260200180610bc96022913960400191505060405180910390fd5b60408051602081019091526004546001600160e01b031681526102bb90610209908463ffffffff61046616565b6001600160901b031690505b92915050565b60005481565b60015481565b6004546001600160e01b031681565b60008060006103167f0000000000000000000000000000000000000000000000000000000000000000610501565b600254929550909350915063ffffffff9081168203906201518090821610156103705760405162461bcd60e51b8152600401808060200182810382526027815260200180610beb6027913960400191505060405180910390fd5b60405180602001604052808263ffffffff1660005487038161038e57fe5b046001600160e01b039081169091529051600380546001600160e01b031916919092161790556040805160208101909152600154819063ffffffff8416908603816103d557fe5b046001600160e01b039081169091529051600480546001600160e01b03191691909216179055506000929092556001556002805463ffffffff191663ffffffff909216919091179055565b6003546001600160e01b031681565b6201518081565b60025463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b61046e6109be565b600082158061049457505082516001600160e01b03168281029083828161049157fe5b04145b6104e5576040805162461bcd60e51b815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b600080600061050e6106f0565b9050836001600160a01b0316635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561054957600080fd5b505afa15801561055d573d6000803e3d6000fd5b505050506040513d602081101561057357600080fd5b505160408051635a3d549360e01b815290519194506001600160a01b03861691635a3d549391600480820192602092909190829003018186803b1580156105b957600080fd5b505afa1580156105cd573d6000803e3d6000fd5b505050506040513d60208110156105e357600080fd5b505160408051630240bc6b60e21b81529051919350600091829182916001600160a01b03891691630902f1ac916004808301926060929190829003018186803b15801561062f57600080fd5b505afa158015610643573d6000803e3d6000fd5b505050506040513d606081101561065957600080fd5b5080516020820151604090920151909450909250905063ffffffff808216908516146106e65780840363ffffffff811661069f6001600160701b038086169087166106fa565b600001516001600160e01b031602870196508063ffffffff166106d4856001600160701b0316856001600160701b03166106fa565b516001600160e01b0316029590950194505b5050509193909250565b63ffffffff421690565b6107026109d1565b600082116107415760405162461bcd60e51b8152600401808060200182810382526026815260200180610ba36026913960400191505060405180910390fd5b8261075b57506040805160208101909152600081526102c7565b6001600160901b0383116107f757600082607085901b8161077857fe5b0490506001600160e01b038111156107d7576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280826001600160e01b03168152509150506102c7565b600061080884600160701b85610866565b90506001600160e01b038111156107d7576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b60008060006108758686610921565b915091506000848061088357fe5b868809905082811115610897576001820391505b9182900391816108b5578483816108aa57fe5b04935050505061091a565b848210610909576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b61091483838761094e565b93505050505b9392505050565b6000808060001984860990508385029250828103915082811015610946576001820391505b509250929050565b6000818103821680838161095e57fe5b04925080858161096a57fe5b04945080816000038161097957fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b6040518060200160405280600081525090565b60408051602081019091526000815290565b60008060006109f28585610aa3565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080826001600160a01b0316846001600160a01b03161415610af75760405162461bcd60e51b8152600401808060200182810382526021815260200180610b826021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610610b17578284610b1a565b83835b90925090506001600160a01b038216610b7a576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b925092905056fe41737472614c6962726172793a204944454e544943414c5f4144445245535345534669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f4578616d706c654f7261636c6553696d706c653a20494e56414c49445f544f4b454e4578616d706c654f7261636c6553696d706c653a20504552494f445f4e4f545f454c4150534544a26469706673582212207089973733e2bd0e39ba504e62272dbcb1e84f7343f881d2c7960058e6bc648c64736f6c6343000606003341737472614c6962726172793a204944454e544943414c5f414444524553534553","opcodes":"PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1297 CODESIZE SUB DUP1 PUSH3 0x1297 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 SWAP1 SWAP4 ADD MLOAD SWAP2 SWAP3 SWAP2 SWAP1 PUSH1 0x0 SWAP1 PUSH3 0x67 SWAP1 DUP6 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH3 0x9E3 PUSH3 0x3FB DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 SHL DUP2 MSTORE POP POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xDFE1681 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xD5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xA0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH32 0xD21220A700000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0xD21220A7 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x158 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x16D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0xC0 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH32 0x5909C0D500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0x5909C0D5 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x205 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x21C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH32 0x5A3D549300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP2 PUSH4 0x5A3D5493 SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x27B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x290 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x2A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH32 0x902F1AC00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x902F1AC SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x320 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH3 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD PUSH1 0x2 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP3 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x383 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP2 AND ISZERO ISZERO JUMPDEST PUSH3 0x3EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4578616D706C654F7261636C6553696D706C653A204E4F5F5245534552564553 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP POP PUSH3 0x5EF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH3 0x414 DUP6 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH3 0x4D8 AND JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH3 0x548 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH3 0x1276 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH3 0x56A JUMPI DUP3 DUP5 PUSH3 0x56D JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x5E8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0xC47 PUSH3 0x62F PUSH1 0x0 CODECOPY DUP1 PUSH2 0x220 MSTORE DUP1 PUSH2 0x444 MSTORE POP DUP1 PUSH2 0x17E MSTORE DUP1 PUSH2 0x1A4 MSTORE POP DUP1 PUSH2 0x2F2 MSTORE POP PUSH2 0xC47 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA2E62045 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA2E62045 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0xA6BB4539 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0xB4D1D795 EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0xC5700A02 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x174 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0xDFE1681 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x3DDAC953 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x5E6AAF2C EQ PUSH2 0x115 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x17C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF3 PUSH2 0x2CD JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0x11D PUSH2 0x2D9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x141 PUSH2 0x2E8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11D PUSH2 0x420 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x42F JUMP JUMPDEST PUSH2 0x15B PUSH2 0x436 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH2 0x442 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x21E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH2 0x20E SWAP1 PUSH2 0x209 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x466 AND JUMP JUMPDEST PUSH2 0x4FA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND SWAP1 POP PUSH2 0x2C7 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x28E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBC9 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH2 0x2BB SWAP1 PUSH2 0x209 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x466 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x316 PUSH32 0x0 PUSH2 0x501 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP3 SUB SWAP1 PUSH3 0x15180 SWAP1 DUP3 AND LT ISZERO PUSH2 0x370 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBEB PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0x0 SLOAD DUP8 SUB DUP2 PUSH2 0x38E JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 SLOAD DUP2 SWAP1 PUSH4 0xFFFFFFFF DUP5 AND SWAP1 DUP7 SUB DUP2 PUSH2 0x3D5 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP PUSH1 0x0 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x1 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x15180 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x46E PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x494 JUMPI POP POP DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP3 DUP2 MUL SWAP1 DUP4 DUP3 DUP2 PUSH2 0x491 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x4E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C3A206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x50E PUSH2 0x6F0 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5909C0D5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x55D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x573 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5A3D5493 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x5A3D5493 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x240BC6B PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0x902F1AC SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x62F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x643 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP6 AND EQ PUSH2 0x6E6 JUMPI DUP1 DUP5 SUB PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x69F PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP1 DUP7 AND SWAP1 DUP8 AND PUSH2 0x6FA JUMP JUMPDEST PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND MUL DUP8 ADD SWAP7 POP DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x6D4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x6FA JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND MUL SWAP6 SWAP1 SWAP6 ADD SWAP5 POP JUMPDEST POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH4 0xFFFFFFFF TIMESTAMP AND SWAP1 JUMP JUMPDEST PUSH2 0x702 PUSH2 0x9D1 JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x741 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBA3 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x75B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 GT PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP3 PUSH1 0x70 DUP6 SWAP1 SHL DUP2 PUSH2 0x778 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 GT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE POP SWAP2 POP POP PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x808 DUP5 PUSH1 0x1 PUSH1 0x70 SHL DUP6 PUSH2 0x866 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 GT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x875 DUP7 DUP7 PUSH2 0x921 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0x883 JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0x897 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0x8B5 JUMPI DUP5 DUP4 DUP2 PUSH2 0x8AA JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0x91A JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0x909 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x914 DUP4 DUP4 DUP8 PUSH2 0x94E JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x946 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x95E JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x96A JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x979 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x9F2 DUP6 DUP6 PUSH2 0xAA3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xAF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB82 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xB17 JUMPI DUP3 DUP5 PUSH2 0xB1A JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB7A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 CHAINID PUSH10 0x786564506F696E743A3A PUSH7 0x72616374696F6E GASPRICE KECCAK256 PUSH5 0x6976697369 PUSH16 0x6E206279207A65726F4578616D706C65 0x4F PUSH19 0x61636C6553696D706C653A20494E56414C4944 0x5F SLOAD 0x4F 0x4B GASLIMIT 0x4E GASLIMIT PUSH25 0x616D706C654F7261636C6553696D706C653A20504552494F44 0x5F 0x4E 0x4F SLOAD 0x5F GASLIMIT 0x4C COINBASE POP MSTORE8 GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH17 0x89973733E2BD0E39BA504E62272DBCB1E8 0x4F PUSH20 0x43F881D2C7960058E6BC648C64736F6C63430006 MOD STOP CALLER COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 ","sourceMap":"457:2618:8:-:0;;;888:731;5:9:-1;2:2;;;27:1;24;17:12;2:2;888:731:8;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;888:731:8;;;;;;;;;;;;;;;;966:16;;996:45;;888:731;;;;;;996:20;;;;;:45;;:::i;:::-;966:76;;1059:5;-1:-1:-1;;;;;1052:12:8;;;-1:-1:-1;;;;;1052:12:8;;;;;;;1083:5;-1:-1:-1;;;;;1083:12:8;;:14;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1083:14:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1083:14:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1083:14:8;1074:23;;-1:-1:-1;;;;;;1074:23:8;;;1116:14;;;;;;;;-1:-1:-1;;;;;1116:12:8;;;;;:14;;;;;1083;;1116;;;;;;;:12;:14;;;2:2:-1;;;;27:1;24;17:12;2:2;1116:14:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1116:14:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1116:14:8;1107:23;;-1:-1:-1;;;;;;1107:23:8;;;1163:28;;;;;;;;-1:-1:-1;;;;;1163:26:8;;;;;:28;;;;;1116:14;;1163:28;;;;;;;:26;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;1163:28:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1163:28:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1163:28:8;1140:20;:51;1277:28;;;;;;;;-1:-1:-1;;;;;1277:26:8;;;;;:28;;;;;1163;;1277;;;;;;;:26;:28;;;2:2:-1;;;;27:1;24;17:12;2:2;1277:28:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1277:28:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1277:28:8;1254:20;:51;1463:19;;;;;;;;1368:16;;;;-1:-1:-1;;;;;1463:17:8;;;;;:19;;;;;;;;;;;;;;:17;:19;;;2:2:-1;;;;27:1;24;17:12;2:2;1463:19:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1463:19:8;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1463:19:8;;;;;;;;;;;1441:18;1420:62;;-1:-1:-1;;1420:62:8;;;;;;;;;;;1463:19;-1:-1:-1;1463:19:8;-1:-1:-1;;;;;;1500:13:8;;;;;;:30;;-1:-1:-1;;;;;;1517:13:8;;;;1500:30;1492:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;888:731;;;;;;457:2618;;738:633:18;857:12;;;916:26;927:6;935;-1:-1:-1;;;;;916:10:18;:26;:::i;:::-;1154:32;;;-1:-1:-1;;;;;;1154:32:18;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1154:32:18;;;;;1144:43;;;;;;1036:286;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1036:286:18;;;;;;;1005:335;;;;;;;;;738:633;-1:-1:-1;;;;;738:633:18:o;260:389::-;359:14;375;423:6;-1:-1:-1;;;;;413:16:18;:6;-1:-1:-1;;;;;413:16:18;;;405:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:6;-1:-1:-1;;;;;496:15:18;:6;-1:-1:-1;;;;;496:15:18;;:77;;558:6;566;496:77;;;527:6;535;496:77;477:96;;-1:-1:-1;477:96:18;-1:-1:-1;;;;;;591:20:18;;583:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;260:389;;;;;:::o;457:2618:8:-;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"4510":[{"length":32,"start":754}],"4512":[{"length":32,"start":382},{"length":32,"start":420}],"4514":[{"length":32,"start":544},{"length":32,"start":1092}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a2e6204511610066578063a2e6204514610139578063a6bb453914610143578063b4d1d7951461014b578063c5700a0214610153578063d21220a7146101745761009e565b80630dfe1681146100a35780633ddac953146100c75780635909c0d5146101055780635a3d54931461010d5780635e6aaf2c14610115575b600080fd5b6100ab61017c565b604080516001600160a01b039092168252519081900360200190f35b6100f3600480360360408110156100dd57600080fd5b506001600160a01b0381351690602001356101a0565b60408051918252519081900360200190f35b6100f36102cd565b6100f36102d3565b61011d6102d9565b604080516001600160e01b039092168252519081900360200190f35b6101416102e8565b005b61011d610420565b6100f361042f565b61015b610436565b6040805163ffffffff9092168252519081900360200190f35b6100ab610442565b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561021e5760408051602081019091526003546001600160e01b0316815261020e90610209908463ffffffff61046616565b6104fa565b6001600160901b031690506102c7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161461028e5760405162461bcd60e51b8152600401808060200182810382526022815260200180610bc96022913960400191505060405180910390fd5b60408051602081019091526004546001600160e01b031681526102bb90610209908463ffffffff61046616565b6001600160901b031690505b92915050565b60005481565b60015481565b6004546001600160e01b031681565b60008060006103167f0000000000000000000000000000000000000000000000000000000000000000610501565b600254929550909350915063ffffffff9081168203906201518090821610156103705760405162461bcd60e51b8152600401808060200182810382526027815260200180610beb6027913960400191505060405180910390fd5b60405180602001604052808263ffffffff1660005487038161038e57fe5b046001600160e01b039081169091529051600380546001600160e01b031916919092161790556040805160208101909152600154819063ffffffff8416908603816103d557fe5b046001600160e01b039081169091529051600480546001600160e01b03191691909216179055506000929092556001556002805463ffffffff191663ffffffff909216919091179055565b6003546001600160e01b031681565b6201518081565b60025463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b61046e6109be565b600082158061049457505082516001600160e01b03168281029083828161049157fe5b04145b6104e5576040805162461bcd60e51b815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b600080600061050e6106f0565b9050836001600160a01b0316635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561054957600080fd5b505afa15801561055d573d6000803e3d6000fd5b505050506040513d602081101561057357600080fd5b505160408051635a3d549360e01b815290519194506001600160a01b03861691635a3d549391600480820192602092909190829003018186803b1580156105b957600080fd5b505afa1580156105cd573d6000803e3d6000fd5b505050506040513d60208110156105e357600080fd5b505160408051630240bc6b60e21b81529051919350600091829182916001600160a01b03891691630902f1ac916004808301926060929190829003018186803b15801561062f57600080fd5b505afa158015610643573d6000803e3d6000fd5b505050506040513d606081101561065957600080fd5b5080516020820151604090920151909450909250905063ffffffff808216908516146106e65780840363ffffffff811661069f6001600160701b038086169087166106fa565b600001516001600160e01b031602870196508063ffffffff166106d4856001600160701b0316856001600160701b03166106fa565b516001600160e01b0316029590950194505b5050509193909250565b63ffffffff421690565b6107026109d1565b600082116107415760405162461bcd60e51b8152600401808060200182810382526026815260200180610ba36026913960400191505060405180910390fd5b8261075b57506040805160208101909152600081526102c7565b6001600160901b0383116107f757600082607085901b8161077857fe5b0490506001600160e01b038111156107d7576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280826001600160e01b03168152509150506102c7565b600061080884600160701b85610866565b90506001600160e01b038111156107d7576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b60008060006108758686610921565b915091506000848061088357fe5b868809905082811115610897576001820391505b9182900391816108b5578483816108aa57fe5b04935050505061091a565b848210610909576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b61091483838761094e565b93505050505b9392505050565b6000808060001984860990508385029250828103915082811015610946576001820391505b509250929050565b6000818103821680838161095e57fe5b04925080858161096a57fe5b04945080816000038161097957fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b6040518060200160405280600081525090565b60408051602081019091526000815290565b60008060006109f28585610aa3565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b600080826001600160a01b0316846001600160a01b03161415610af75760405162461bcd60e51b8152600401808060200182810382526021815260200180610b826021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610610b17578284610b1a565b83835b90925090506001600160a01b038216610b7a576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b925092905056fe41737472614c6962726172793a204944454e544943414c5f4144445245535345534669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726f4578616d706c654f7261636c6553696d706c653a20494e56414c49445f544f4b454e4578616d706c654f7261636c6553696d706c653a20504552494f445f4e4f545f454c4150534544a26469706673582212207089973733e2bd0e39ba504e62272dbcb1e84f7343f881d2c7960058e6bc648c64736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA2E62045 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA2E62045 EQ PUSH2 0x139 JUMPI DUP1 PUSH4 0xA6BB4539 EQ PUSH2 0x143 JUMPI DUP1 PUSH4 0xB4D1D795 EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0xC5700A02 EQ PUSH2 0x153 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x174 JUMPI PUSH2 0x9E JUMP JUMPDEST DUP1 PUSH4 0xDFE1681 EQ PUSH2 0xA3 JUMPI DUP1 PUSH4 0x3DDAC953 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x5E6AAF2C EQ PUSH2 0x115 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0x17C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1A0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF3 PUSH2 0x2CD JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0x11D PUSH2 0x2D9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x141 PUSH2 0x2E8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x11D PUSH2 0x420 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x42F JUMP JUMPDEST PUSH2 0x15B PUSH2 0x436 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH2 0x442 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x21E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH2 0x20E SWAP1 PUSH2 0x209 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x466 AND JUMP JUMPDEST PUSH2 0x4FA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND SWAP1 POP PUSH2 0x2C7 JUMP JUMPDEST PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x28E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBC9 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE PUSH2 0x2BB SWAP1 PUSH2 0x209 SWAP1 DUP5 PUSH4 0xFFFFFFFF PUSH2 0x466 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x316 PUSH32 0x0 PUSH2 0x501 JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP3 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP PUSH4 0xFFFFFFFF SWAP1 DUP2 AND DUP3 SUB SWAP1 PUSH3 0x15180 SWAP1 DUP3 AND LT ISZERO PUSH2 0x370 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBEB PUSH1 0x27 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0x0 SLOAD DUP8 SUB DUP2 PUSH2 0x38E JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 SLOAD DUP2 SWAP1 PUSH4 0xFFFFFFFF DUP5 AND SWAP1 DUP7 SUB DUP2 PUSH2 0x3D5 JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB SWAP1 DUP2 AND SWAP1 SWAP2 MSTORE SWAP1 MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP PUSH1 0x0 SWAP3 SWAP1 SWAP3 SSTORE PUSH1 0x1 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH3 0x15180 DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x46E PUSH2 0x9BE JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0x494 JUMPI POP POP DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP3 DUP2 MUL SWAP1 DUP4 DUP3 DUP2 PUSH2 0x491 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x4E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C3A206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x50E PUSH2 0x6F0 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5909C0D5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x549 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x55D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x573 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5A3D5493 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x5A3D5493 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5CD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x240BC6B PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0x902F1AC SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x62F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x643 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP6 AND EQ PUSH2 0x6E6 JUMPI DUP1 DUP5 SUB PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x69F PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP1 DUP7 AND SWAP1 DUP8 AND PUSH2 0x6FA JUMP JUMPDEST PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND MUL DUP8 ADD SWAP7 POP DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x6D4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0x6FA JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND MUL SWAP6 SWAP1 SWAP6 ADD SWAP5 POP JUMPDEST POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH4 0xFFFFFFFF TIMESTAMP AND SWAP1 JUMP JUMPDEST PUSH2 0x702 PUSH2 0x9D1 JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0x741 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBA3 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0x75B JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 GT PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP3 PUSH1 0x70 DUP6 SWAP1 SHL DUP2 PUSH2 0x778 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 GT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE POP SWAP2 POP POP PUSH2 0x2C7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x808 DUP5 PUSH1 0x1 PUSH1 0x70 SHL DUP6 PUSH2 0x866 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 GT ISZERO PUSH2 0x7D7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x875 DUP7 DUP7 PUSH2 0x921 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0x883 JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0x897 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0x8B5 JUMPI DUP5 DUP4 DUP2 PUSH2 0x8AA JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0x91A JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0x909 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x914 DUP4 DUP4 DUP8 PUSH2 0x94E JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0x946 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0x95E JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0x96A JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0x979 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x9F2 DUP6 DUP6 PUSH2 0xAA3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xAF7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB82 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0xB17 JUMPI DUP3 DUP5 PUSH2 0xB1A JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xB7A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP INVALID COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 CHAINID PUSH10 0x786564506F696E743A3A PUSH7 0x72616374696F6E GASPRICE KECCAK256 PUSH5 0x6976697369 PUSH16 0x6E206279207A65726F4578616D706C65 0x4F PUSH19 0x61636C6553696D706C653A20494E56414C4944 0x5F SLOAD 0x4F 0x4B GASLIMIT 0x4E GASLIMIT PUSH25 0x616D706C654F7261636C6553696D706C653A20504552494F44 0x5F 0x4E 0x4F SLOAD 0x5F GASLIMIT 0x4C COINBASE POP MSTORE8 GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH17 0x89973733E2BD0E39BA504E62272DBCB1E8 0x4F PUSH20 0x43F881D2C7960058E6BC648C64736F6C63430006 MOD STOP CALLER ","sourceMap":"457:2618:8:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;457:2618:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;597:31:8;;;:::i;:::-;;;;-1:-1:-1;;;;;597:31:8;;;;;;;;;;;;;;2716:357;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2716:357:8;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;672:35;;;:::i;713:::-;;;:::i;840:41::-;;;:::i;:::-;;;;-1:-1:-1;;;;;840:41:8;;;;;;;;;;;;;;1625:984;;;:::i;:::-;;793:41;;;:::i;521:38::-;;;:::i;754:33::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;634:31;;;:::i;597:::-;;;:::o;2716:357::-;2786:14;2825:6;-1:-1:-1;;;;;2816:15:8;:5;-1:-1:-1;;;;;2816:15:8;;2812:255;;;2859:17;;;;;;;;;:13;:17;-1:-1:-1;;;;;2859:17:8;;;:39;;:27;;2877:8;2859:27;:17;:27;:::i;:::-;:37;:39::i;:::-;-1:-1:-1;;;;;2847:51:8;;;2812:255;;;2946:6;-1:-1:-1;;;;;2937:15:8;:5;-1:-1:-1;;;;;2937:15:8;;2929:62;;;;-1:-1:-1;;;2929:62:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3017:17;;;;;;;;;:13;:17;-1:-1:-1;;;;;3017:17:8;;;:39;;:27;;3035:8;3017:27;:17;:27;:::i;:39::-;-1:-1:-1;;;;;3005:51:8;;;2812:255;2716:357;;;;:::o;672:35::-;;;;:::o;713:::-;;;;:::o;840:41::-;;;-1:-1:-1;;;;;840:41:8;;:::o;1625:984::-;1663:21;1686;1709;1746:57;1797:4;1746:42;:57::i;:::-;1851:18;;1662:141;;-1:-1:-1;1662:141:8;;-1:-1:-1;1662:141:8;-1:-1:-1;1851:18:8;;;;1834:35;;;551:8;1992:21;;;;;1984:73;;;;-1:-1:-1;;;1984:73:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2260:86;;;;;;;;2333:11;2289:55;;2309:20;;2290:16;:39;2289:55;;;;;;-1:-1:-1;;;;;2260:86:8;;;;;;2244:102;;:13;:102;;-1:-1:-1;;;;;;2244:102:8;;;;;;;;2372:86;;;;;;;;;-1:-1:-1;2421:20:8;2372:86;;2401:55;;;;2402:39;;2401:55;;;;;;-1:-1:-1;;;;;2372:86:8;;;;;;2356:102;;:13;:102;;-1:-1:-1;;;;;;2356:102:8;;;;;;;;-1:-1:-1;;2469:39:8;;;;-1:-1:-1;2518:39:8;2567:18;:35;;-1:-1:-1;;2567:35:8;;;;;;;;;;;1625:984::o;793:41::-;;;-1:-1:-1;;;;;793:41:8;;:::o;521:38::-;551:8;521:38;:::o;754:33::-;;;;;;:::o;634:31::-;;;:::o;1718:237:23:-;1788:16;;:::i;:::-;1816:9;1847:6;;;:42;;-1:-1:-1;;1882:7:23;;-1:-1:-1;;;;;1857:32:23;1862:11;;;;1877:1;1862:11;1877:1;1857:21;;;;;:32;1847:42;1839:80;;;;;-1:-1:-1;;;1839:80:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;1936:12;;;;;;;;;;;;;1718:237;-1:-1:-1;;;1718:237:23:o;1496:128::-;1595:7;555:3;1595:21;;1496:128::o;591:1028:20:-;675:21;698;721;771:23;:21;:23::i;:::-;754:40;;834:4;-1:-1:-1;;;;;823:37:20;;:39;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;823:39:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;823:39:20;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;823:39:20;891;;;-1:-1:-1;;;891:39:20;;;;823;;-1:-1:-1;;;;;;891:37:20;;;;;:39;;;;;823;;891;;;;;;;;:37;:39;;;2:2:-1;;;;27:1;24;17:12;2:2;891:39:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;891:39:20;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;891:39:20;1107:30;;;-1:-1:-1;;;1107:30:20;;;;891:39;;-1:-1:-1;1042:16:20;;;;;;-1:-1:-1;;;;;1107:28:20;;;;;:30;;;;;;;;;;;;;;:28;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;1107:30:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1107:30:20;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1107:30:20;;;;;;;;;;;;;-1:-1:-1;1107:30:20;;-1:-1:-1;1107:30:20;-1:-1:-1;1151:36:20;;;;;;;;1147:466;;1271:35;;;1414:62;;;1419:39;-1:-1:-1;;;;;1419:39:20;;;;;;:19;:39::i;:::-;:42;;;-1:-1:-1;;;;;1414:48:20;:62;1394:82;;;;1591:11;1540:62;;1545:39;1565:8;-1:-1:-1;;;;;1545:39:20;1575:8;-1:-1:-1;;;;;1545:39:20;:19;:39::i;:::-;:42;-1:-1:-1;;;;;1540:48:20;:62;1520:82;;;;;-1:-1:-1;1147:466:20;591:1028;;;;;;;;:::o;367:121::-;455:25;:15;:25;;367:121::o;4550:706:23:-;4631:16;;:::i;:::-;4681:1;4667:11;:15;4659:66;;;;-1:-1:-1;;;4659:66:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4739:14;4735:50;;-1:-1:-1;4762:23:23;;;;;;;;;-1:-1:-1;4762:23:23;;4755:30;;4735:50;-1:-1:-1;;;;;4800:24:23;;4796:454;;4840:14;4885:11;555:3;4858:23;;;4885:11;4857:39;;;;;;-1:-1:-1;;;;;;4918:21:23;;;4910:64;;;;;-1:-1:-1;;;4910:64:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;4995:26;;;;;;;;5013:6;-1:-1:-1;;;;;4995:26:23;;;;4988:33;;;;;4796:454;5052:14;5069:45;5085:9;-1:-1:-1;;;5102:11:23;5069:15;:45::i;:::-;5052:62;-1:-1:-1;;;;;;5136:21:23;;;5128:64;;;;;-1:-1:-1;;;5128:64:23;;;;;;;;;;;;;;;;;;;;;;;;;;;897:373:24;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;-1:-1:-1;;;1186:44:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;;;;;897:373;;;;;;:::o;216:206::-;278:9;;;-1:-1:-1;;333:1:24;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:24:o;457:2618:8:-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;-1:-1:-1;457:2618:8;;;:::o;738:633:18:-;857:12;882:14;898;916:26;927:6;935;916:10;:26::i;:::-;1154:32;;;-1:-1:-1;;1154:32:18;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1154:32:18;;;;;1144:43;;;;;;-1:-1:-1;;;;;;1036:286:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1036:286:18;;;;;;;1005:335;;;;;;;;;738:633;-1:-1:-1;;;;;738:633:18:o;260:389::-;359:14;375;423:6;-1:-1:-1;;;;;413:16:18;:6;-1:-1:-1;;;;;413:16:18;;;405:62;;;;-1:-1:-1;;;405:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:6;-1:-1:-1;;;;;496:15:18;:6;-1:-1:-1;;;;;496:15:18;;:77;;558:6;566;496:77;;;527:6;535;496:77;477:96;;-1:-1:-1;477:96:18;-1:-1:-1;;;;;;591:20:18;;583:59;;;;;-1:-1:-1;;;583:59:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;260:389;;;;;:::o"},"methodIdentifiers":{"PERIOD()":"b4d1d795","blockTimestampLast()":"c5700a02","consult(address,uint256)":"3ddac953","price0Average()":"a6bb4539","price0CumulativeLast()":"5909c0d5","price1Average()":"5e6aaf2c","price1CumulativeLast()":"5a3d5493","token0()":"0dfe1681","token1()":"d21220a7","update()":"a2e62045"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockTimestampLast\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"consult\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0Average\",\"outputs\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1Average\",\"outputs\":[{\"internalType\":\"uint224\",\"name\":\"_x\",\"type\":\"uint224\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token0\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token1\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"update\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/examples/ExampleOracleSimple.sol\":\"ExampleOracleSimple\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraFactory.sol\":{\"keccak256\":\"0x1d8cfacb873119cce028428fbfc6741a17f9dff23726b6f9262be38b04d2147d\",\"urls\":[\"bzz-raw://8161eaf5b9b22d8d7bb774f33dd0465b3796decc507f6509d02800052b6da351\",\"dweb:/ipfs/QmWhWSfZqWbx9iBRsV2PB2oEGcV7tgp8TthHH6ZYbN2JCP\"]},\"contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"contracts/periphery/examples/ExampleOracleSimple.sol\":{\"keccak256\":\"0x502a01c77595ed49ab571504287bd5dd307818e73464bff1584944e646279ee5\",\"urls\":[\"bzz-raw://73aa46e94bb9c8a4fa8d9bf27743e4d80ab795d84f06c2e7ad6ee46537237aaa\",\"dweb:/ipfs/QmViUyyMydR1CDU4t6Ls9LSEj5Sy5CnEaV8iQ8LKKRiHNm\"]},\"contracts/periphery/libraries/AstraLibrary.sol\":{\"keccak256\":\"0xae44fd35f2a3c3498de7cbc39ec1f34ac497d62bfa993d07795ae3bc124b2b31\",\"urls\":[\"bzz-raw://637a1e7bb00c545f7ba83851539379085fe791497a5b36cff1dee4a34e0056d9\",\"dweb:/ipfs/QmaFeUq9bYst2tN6zfTNqGW48kACsvXaofZvKtQP4DTqWh\"]},\"contracts/periphery/libraries/AstraOracleLibrary.sol\":{\"keccak256\":\"0x424adb3090303ecc84ae9db02fddacce5ca914d37606dcc599122be73be9e4e2\",\"urls\":[\"bzz-raw://526c8a6e6057b44d2bfa85ef3b8e10bcb78f42acc5250f7d45712e55c683e492\",\"dweb:/ipfs/QmVXKXwJvkcuE6d26GRowfDSq5k56DP59JKKxDnU2GZfru\"]},\"contracts/periphery/libraries/Babylonian.sol\":{\"keccak256\":\"0xeb1c2a281a00f4660775f75ccfa1e51fbe1d75f86aeb9d0d297151ecdb900177\",\"urls\":[\"bzz-raw://68515f0265381bddfb1d1356ea10ce4e5784276fc09f197fcdcedfa5c75cc069\",\"dweb:/ipfs/QmXWVVPnuJwRUAu3Qpu1s7Fyc5WPQxmZPczVEe5cJ5wVHZ\"]},\"contracts/periphery/libraries/BitMath.sol\":{\"keccak256\":\"0x19f84d5268286794b44939ec0d85b3c6f59e133f826cdbd9e40112fc94919bb7\",\"urls\":[\"bzz-raw://d21c67ed58cf667d052e141df2fba76c46c159edcc45eb897c908c20c69d2727\",\"dweb:/ipfs/QmUyKz1992wgR8nYAzBuQzjBAKMxLAN3hTgzpYJxusbmVH\"]},\"contracts/periphery/libraries/FixedPoint.sol\":{\"keccak256\":\"0x127ecf7db1a5b5a38610f3f11337715fc00ba57ee412fa6978dcf2cf58eccdf7\",\"urls\":[\"bzz-raw://f7027d233bc1f41809e484d6866ddf2408897994cbe8c9ab99f397767bbd13db\",\"dweb:/ipfs/QmPr72ABBnRTSoZZmkygzgskZzogZb1M74U9Tf2DHH62xn\"]},\"contracts/periphery/libraries/FullMath.sol\":{\"keccak256\":\"0xc4ffcf28169f73fc9fdd1f82345d6d4fcccf3fd5aea83c133437c25e4e0950a9\",\"urls\":[\"bzz-raw://c9257a47501005f0a648bc4801ef4abc33843681aaf03a6d0c43d46b69e37407\",\"dweb:/ipfs/QmciHvDrqhxs5fjsrm9aNq29FZXpunMn17n2wWj83Zsh3B\"]},\"contracts/periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1\",\"urls\":[\"bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c\",\"dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg\"]}},\"version\":1}"}},"contracts/periphery/examples/ExampleSlidingWindowOracle.sol":{"ExampleSlidingWindowOracle":{"abi":[{"inputs":[{"internalType":"address","name":"factory_","type":"address"},{"internalType":"uint256","name":"windowSize_","type":"uint256"},{"internalType":"uint8","name":"granularity_","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address","name":"tokenOut","type":"address"}],"name":"consult","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"granularity","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"observationIndexOf","outputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"pairObservations","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"price0Cumulative","type":"uint256"},{"internalType":"uint256","name":"price1Cumulative","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"update","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"windowSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"61010060405234801561001157600080fd5b5060405161109f38038061109f8339818101604052606081101561003457600080fd5b5080516020820151604090920151909190600160ff8216116100b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f536c6964696e6757696e646f774f7261636c653a204752414e554c4152495459604482015290519081900360640190fd5b8160ff82168082816100c557fe5b0460e08190520214610122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061106f6030913960400191505060405180910390fd5b606083901b6001600160601b03191660805260a082905260f881901b7fff000000000000000000000000000000000000000000000000000000000000001660c05260e0516001600160a01b039093169260ff90911690610e9c6101d3600039806102a952806104eb528061053e528061059e5250806101c05280610448528061056a52806106925250806101e4528061024a52806102cd52508061020e52806103da52806104035250610e9c6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a015514610145578063c640752d14610169578063dbaad32f14610199578063e4463eb2146101b657610088565b8063556f0dc71461008d5780638a14117a146100ab5780638c86f1e4146100c5578063bfcc8e42146100fb575b600080fd5b6100956101be565b6040805160ff9092168252519081900360200190f35b6100b36101e2565b60408051918252519081900360200190f35b6100b3600480360360608110156100db57600080fd5b506001600160a01b03813581169160208101359160409091013516610206565b6101276004803603604081101561011157600080fd5b506001600160a01b038135169060200135610399565b60408051938452602084019290925282820152519081900360600190f35b61014d6103d8565b604080516001600160a01b039092168252519081900360200190f35b6101976004803603604081101561017f57600080fd5b506001600160a01b03813581169160200135166103fc565b005b610095600480360360208110156101af57600080fd5b5035610539565b6100b361059c565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102347f000000000000000000000000000000000000000000000000000000000000000086856105c0565b9050600061024182610680565b805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156102a75760405162461bcd60e51b8152600401808060200182810382526033815260200180610dc16033913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006002027f00000000000000000000000000000000000000000000000000000000000000000381101561032b5760405162461bcd60e51b815260040180806020018281038252602c815260200180610e15602c913960400191505060405180910390fd5b6000806103378561070e565b509150915060006103488a896108fd565b509050896001600160a01b0316816001600160a01b0316141561038257610375856001015484868c6109db565b9650505050505050610392565b610375856002015483868c6109db565b9392505050565b600060205281600052604060002081815481106103b257fe5b600091825260209091206003909102018054600182015460029092015490935090915083565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006104297f000000000000000000000000000000000000000000000000000000000000000084846105c0565b6001600160a01b0381166000908152602081905260409020549091505b7f000000000000000000000000000000000000000000000000000000000000000060ff1681101561049a576001600160a01b0382166000908152602081905260408120805460019081018255915201610446565b5060006104a642610539565b6001600160a01b03831660009081526020819052604081208054929350909160ff84169081106104d257fe5b60009182526020909120600390910201805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156105315760008061051d8661070e565b504286556001860191909155600285015550505b505050505050565b6000807f0000000000000000000000000000000000000000000000000000000000000000838161056557fe5b0490507f000000000000000000000000000000000000000000000000000000000000000060ff16818161059457fe5b069392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006105cf85856108fd565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b60008061068c42610539565b905060007f000000000000000000000000000000000000000000000000000000000000000060ff168260010160ff16816106c257fe5b069050600080856001600160a01b03166001600160a01b031681526020019081526020016000208160ff16815481106106f757fe5b906000526020600020906003020192505050919050565b600080600061071b610a2e565b9050836001600160a01b0316635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561075657600080fd5b505afa15801561076a573d6000803e3d6000fd5b505050506040513d602081101561078057600080fd5b505160408051635a3d549360e01b815290519194506001600160a01b03861691635a3d549391600480820192602092909190829003018186803b1580156107c657600080fd5b505afa1580156107da573d6000803e3d6000fd5b505050506040513d60208110156107f057600080fd5b505160408051630240bc6b60e21b81529051919350600091829182916001600160a01b03891691630902f1ac916004808301926060929190829003018186803b15801561083c57600080fd5b505afa158015610850573d6000803e3d6000fd5b505050506040513d606081101561086657600080fd5b5080516020820151604090920151909450909250905063ffffffff808216908516146108f35780840363ffffffff81166108ac6001600160701b03808616908716610a38565b600001516001600160e01b031602870196508063ffffffff166108e1856001600160701b0316856001600160701b0316610a38565b516001600160e01b0316029590950194505b5050509193909250565b600080826001600160a01b0316846001600160a01b031614156109515760405162461bcd60e51b8152600401808060200182810382526021815260200180610df46021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610610971578284610974565b83835b90925090506001600160a01b0382166109d4576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b60006109e5610d9b565b604051806020016040528085888803816109fb57fe5b046001600160e01b031690529050610a1b610a168285610baa565b610c3e565b6001600160901b03169695505050505050565b63ffffffff421690565b610a40610d9b565b60008211610a7f5760405162461bcd60e51b8152600401808060200182810382526026815260200180610e416026913960400191505060405180910390fd5b82610a995750604080516020810190915260008152610ba4565b6001600160901b038311610b3557600082607085901b81610ab657fe5b0490506001600160e01b03811115610b15576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280826001600160e01b0316815250915050610ba4565b6000610b4684600160701b85610c45565b90506001600160e01b03811115610b15576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b92915050565b610bb2610dad565b6000821580610bd857505082516001600160e01b031682810290838281610bd557fe5b04145b610c29576040805162461bcd60e51b815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b6000806000610c548686610cfe565b9150915060008480610c6257fe5b868809905082811115610c76576001820391505b918290039181610c9457848381610c8957fe5b049350505050610392565b848210610ce8576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610cf3838387610d2b565b979650505050505050565b6000808060001984860990508385029250828103915082811015610d23576001820391505b509250929050565b60008181038216808381610d3b57fe5b049250808581610d4757fe5b049450808160000381610d5657fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b604051806020016040528060008152509056fe536c6964696e6757696e646f774f7261636c653a204d495353494e475f484953544f524943414c5f4f42534552564154494f4e41737472614c6962726172793a204944454e544943414c5f414444524553534553536c6964696e6757696e646f774f7261636c653a20554e45585045435445445f54494d455f454c41505345444669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726fa26469706673582212209a5349fa599572864e86ce5b8e09218e00f00d31d21f947c60277aba0b2a6a5464736f6c63430006060033536c6964696e6757696e646f774f7261636c653a2057494e444f575f4e4f545f4556454e4c595f444956495349424c45","opcodes":"PUSH2 0x100 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x109F CODESIZE SUB DUP1 PUSH2 0x109F DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP2 SWAP1 PUSH1 0x1 PUSH1 0xFF DUP3 AND GT PUSH2 0xB7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536C6964696E6757696E646F774F7261636C653A204752414E554C4152495459 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 PUSH1 0xFF DUP3 AND DUP1 DUP3 DUP2 PUSH2 0xC5 JUMPI INVALID JUMPDEST DIV PUSH1 0xE0 DUP2 SWAP1 MSTORE MUL EQ PUSH2 0x122 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x106F PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH1 0xA0 DUP3 SWAP1 MSTORE PUSH1 0xF8 DUP2 SWAP1 SHL PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND PUSH1 0xC0 MSTORE PUSH1 0xE0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 PUSH2 0xE9C PUSH2 0x1D3 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x2A9 MSTORE DUP1 PUSH2 0x4EB MSTORE DUP1 PUSH2 0x53E MSTORE DUP1 PUSH2 0x59E MSTORE POP DUP1 PUSH2 0x1C0 MSTORE DUP1 PUSH2 0x448 MSTORE DUP1 PUSH2 0x56A MSTORE DUP1 PUSH2 0x692 MSTORE POP DUP1 PUSH2 0x1E4 MSTORE DUP1 PUSH2 0x24A MSTORE DUP1 PUSH2 0x2CD MSTORE POP DUP1 PUSH2 0x20E MSTORE DUP1 PUSH2 0x3DA MSTORE DUP1 PUSH2 0x403 MSTORE POP PUSH2 0xE9C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC45A0155 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xC640752D EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0xDBAAD32F EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0xE4463EB2 EQ PUSH2 0x1B6 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x556F0DC7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x8A14117A EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x8C86F1E4 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xBFCC8E42 EQ PUSH2 0xFB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH2 0x1E2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x206 JUMP JUMPDEST PUSH2 0x127 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x399 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14D PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3FC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x95 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x539 JUMP JUMPDEST PUSH2 0xB3 PUSH2 0x59C JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x234 PUSH32 0x0 DUP7 DUP6 PUSH2 0x5C0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x241 DUP3 PUSH2 0x680 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP TIMESTAMP SUB PUSH32 0x0 DUP2 GT ISZERO PUSH2 0x2A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDC1 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x2 MUL PUSH32 0x0 SUB DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE15 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x337 DUP6 PUSH2 0x70E JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x348 DUP11 DUP10 PUSH2 0x8FD JUMP JUMPDEST POP SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x382 JUMPI PUSH2 0x375 DUP6 PUSH1 0x1 ADD SLOAD DUP5 DUP7 DUP13 PUSH2 0x9DB JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x392 JUMP JUMPDEST PUSH2 0x375 DUP6 PUSH1 0x2 ADD SLOAD DUP4 DUP7 DUP13 PUSH2 0x9DB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x3B2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP4 POP SWAP1 SWAP2 POP DUP4 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x429 PUSH32 0x0 DUP5 DUP5 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP JUMPDEST PUSH32 0x0 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x49A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD DUP3 SSTORE SWAP2 MSTORE ADD PUSH2 0x446 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x4A6 TIMESTAMP PUSH2 0x539 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH1 0xFF DUP5 AND SWAP1 DUP2 LT PUSH2 0x4D2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD SWAP1 SWAP2 POP TIMESTAMP SUB PUSH32 0x0 DUP2 GT ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 PUSH2 0x51D DUP7 PUSH2 0x70E JUMP JUMPDEST POP TIMESTAMP DUP7 SSTORE PUSH1 0x1 DUP7 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP6 ADD SSTORE POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 DUP4 DUP2 PUSH2 0x565 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH32 0x0 PUSH1 0xFF AND DUP2 DUP2 PUSH2 0x594 JUMPI INVALID JUMPDEST MOD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x5CF DUP6 DUP6 PUSH2 0x8FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x68C TIMESTAMP PUSH2 0x539 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0xFF AND DUP3 PUSH1 0x1 ADD PUSH1 0xFF AND DUP2 PUSH2 0x6C2 JUMPI INVALID JUMPDEST MOD SWAP1 POP PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x6F7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x71B PUSH2 0xA2E JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5909C0D5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x756 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x76A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5A3D5493 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x5A3D5493 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x240BC6B PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0x902F1AC SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x83C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x850 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x866 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP6 AND EQ PUSH2 0x8F3 JUMPI DUP1 DUP5 SUB PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x8AC PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP1 DUP7 AND SWAP1 DUP8 AND PUSH2 0xA38 JUMP JUMPDEST PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND MUL DUP8 ADD SWAP7 POP DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x8E1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0xA38 JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND MUL SWAP6 SWAP1 SWAP6 ADD SWAP5 POP JUMPDEST POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x951 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDF4 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x971 JUMPI DUP3 DUP5 PUSH2 0x974 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x9D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E5 PUSH2 0xD9B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP9 DUP9 SUB DUP2 PUSH2 0x9FB JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 MSTORE SWAP1 POP PUSH2 0xA1B PUSH2 0xA16 DUP3 DUP6 PUSH2 0xBAA JUMP JUMPDEST PUSH2 0xC3E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0xFFFFFFFF TIMESTAMP AND SWAP1 JUMP JUMPDEST PUSH2 0xA40 PUSH2 0xD9B JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xA7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE41 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xA99 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0xBA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 GT PUSH2 0xB35 JUMPI PUSH1 0x0 DUP3 PUSH1 0x70 DUP6 SWAP1 SHL DUP2 PUSH2 0xAB6 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 GT ISZERO PUSH2 0xB15 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE POP SWAP2 POP POP PUSH2 0xBA4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB46 DUP5 PUSH1 0x1 PUSH1 0x70 SHL DUP6 PUSH2 0xC45 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 GT ISZERO PUSH2 0xB15 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBB2 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xBD8 JUMPI POP POP DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP3 DUP2 MUL SWAP1 DUP4 DUP3 DUP2 PUSH2 0xBD5 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xC29 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C3A206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xC54 DUP7 DUP7 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xC62 JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xC94 JUMPI DUP5 DUP4 DUP2 PUSH2 0xC89 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0x392 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xCE8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xCF3 DUP4 DUP4 DUP8 PUSH2 0xD2B JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0xD23 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0xD3B JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0xD47 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0xD56 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID MSTORE8 PUSH13 0x6964696E6757696E646F774F72 PUSH2 0x636C PUSH6 0x3A204D495353 0x49 0x4E SELFBALANCE 0x5F 0x48 0x49 MSTORE8 SLOAD 0x4F MSTORE 0x49 NUMBER COINBASE 0x4C 0x5F 0x4F TIMESTAMP MSTORE8 GASLIMIT MSTORE JUMP COINBASE SLOAD 0x49 0x4F 0x4E COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 MSTORE8 PUSH13 0x6964696E6757696E646F774F72 PUSH2 0x636C PUSH6 0x3A20554E4558 POP GASLIMIT NUMBER SLOAD GASLIMIT DIFFICULTY 0x5F SLOAD 0x49 0x4D GASLIMIT 0x5F GASLIMIT 0x4C COINBASE POP MSTORE8 GASLIMIT DIFFICULTY CHAINID PUSH10 0x786564506F696E743A3A PUSH7 0x72616374696F6E GASPRICE KECCAK256 PUSH5 0x6976697369 PUSH16 0x6E206279207A65726FA2646970667358 0x22 SLT KECCAK256 SWAP11 MSTORE8 0x49 STATICCALL MSIZE SWAP6 PUSH19 0x864E86CE5B8E09218E00F00D31D21F947C6027 PUSH27 0xBA0B2A6A5464736F6C63430006060033536C6964696E6757696E64 PUSH16 0x774F7261636C653A2057494E444F575F 0x4E 0x4F SLOAD 0x5F GASLIMIT JUMP GASLIMIT 0x4E 0x4C MSIZE 0x5F DIFFICULTY 0x49 JUMP 0x49 MSTORE8 0x49 TIMESTAMP 0x4C GASLIMIT ","sourceMap":"636:5685:9:-:0;;;1907:427;5:9:-1;2:2;;;27:1;24;17:12;2:2;1907:427:9;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1907:427:9;;;;;;;;;;;;;;2015:1;2000:16;;;;1992:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2144:11;2084:56;;;;2144:11;2084:56;2098:26;;;;;2085:39;;;;2084:56;:71;2063:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:18;;;;-1:-1:-1;;;;;;2239:18:9;;;2267:24;;;;2301:26;;;;;;;;636:5685;;-1:-1:-1;;;;;636:5685:9;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"4736":[{"length":32,"start":526},{"length":32,"start":986},{"length":32,"start":1027}],"4738":[{"length":32,"start":484},{"length":32,"start":586},{"length":32,"start":717}],"4740":[{"length":32,"start":448},{"length":32,"start":1096},{"length":32,"start":1386},{"length":32,"start":1682}],"4742":[{"length":32,"start":681},{"length":32,"start":1259},{"length":32,"start":1342},{"length":32,"start":1438}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a015514610145578063c640752d14610169578063dbaad32f14610199578063e4463eb2146101b657610088565b8063556f0dc71461008d5780638a14117a146100ab5780638c86f1e4146100c5578063bfcc8e42146100fb575b600080fd5b6100956101be565b6040805160ff9092168252519081900360200190f35b6100b36101e2565b60408051918252519081900360200190f35b6100b3600480360360608110156100db57600080fd5b506001600160a01b03813581169160208101359160409091013516610206565b6101276004803603604081101561011157600080fd5b506001600160a01b038135169060200135610399565b60408051938452602084019290925282820152519081900360600190f35b61014d6103d8565b604080516001600160a01b039092168252519081900360200190f35b6101976004803603604081101561017f57600080fd5b506001600160a01b03813581169160200135166103fc565b005b610095600480360360208110156101af57600080fd5b5035610539565b6100b361059c565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806102347f000000000000000000000000000000000000000000000000000000000000000086856105c0565b9050600061024182610680565b805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156102a75760405162461bcd60e51b8152600401808060200182810382526033815260200180610dc16033913960400191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006002027f00000000000000000000000000000000000000000000000000000000000000000381101561032b5760405162461bcd60e51b815260040180806020018281038252602c815260200180610e15602c913960400191505060405180910390fd5b6000806103378561070e565b509150915060006103488a896108fd565b509050896001600160a01b0316816001600160a01b0316141561038257610375856001015484868c6109db565b9650505050505050610392565b610375856002015483868c6109db565b9392505050565b600060205281600052604060002081815481106103b257fe5b600091825260209091206003909102018054600182015460029092015490935090915083565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006104297f000000000000000000000000000000000000000000000000000000000000000084846105c0565b6001600160a01b0381166000908152602081905260409020549091505b7f000000000000000000000000000000000000000000000000000000000000000060ff1681101561049a576001600160a01b0382166000908152602081905260408120805460019081018255915201610446565b5060006104a642610539565b6001600160a01b03831660009081526020819052604081208054929350909160ff84169081106104d257fe5b60009182526020909120600390910201805490915042037f00000000000000000000000000000000000000000000000000000000000000008111156105315760008061051d8661070e565b504286556001860191909155600285015550505b505050505050565b6000807f0000000000000000000000000000000000000000000000000000000000000000838161056557fe5b0490507f000000000000000000000000000000000000000000000000000000000000000060ff16818161059457fe5b069392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006105cf85856108fd565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b60008061068c42610539565b905060007f000000000000000000000000000000000000000000000000000000000000000060ff168260010160ff16816106c257fe5b069050600080856001600160a01b03166001600160a01b031681526020019081526020016000208160ff16815481106106f757fe5b906000526020600020906003020192505050919050565b600080600061071b610a2e565b9050836001600160a01b0316635909c0d56040518163ffffffff1660e01b815260040160206040518083038186803b15801561075657600080fd5b505afa15801561076a573d6000803e3d6000fd5b505050506040513d602081101561078057600080fd5b505160408051635a3d549360e01b815290519194506001600160a01b03861691635a3d549391600480820192602092909190829003018186803b1580156107c657600080fd5b505afa1580156107da573d6000803e3d6000fd5b505050506040513d60208110156107f057600080fd5b505160408051630240bc6b60e21b81529051919350600091829182916001600160a01b03891691630902f1ac916004808301926060929190829003018186803b15801561083c57600080fd5b505afa158015610850573d6000803e3d6000fd5b505050506040513d606081101561086657600080fd5b5080516020820151604090920151909450909250905063ffffffff808216908516146108f35780840363ffffffff81166108ac6001600160701b03808616908716610a38565b600001516001600160e01b031602870196508063ffffffff166108e1856001600160701b0316856001600160701b0316610a38565b516001600160e01b0316029590950194505b5050509193909250565b600080826001600160a01b0316846001600160a01b031614156109515760405162461bcd60e51b8152600401808060200182810382526021815260200180610df46021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b031610610971578284610974565b83835b90925090506001600160a01b0382166109d4576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b60006109e5610d9b565b604051806020016040528085888803816109fb57fe5b046001600160e01b031690529050610a1b610a168285610baa565b610c3e565b6001600160901b03169695505050505050565b63ffffffff421690565b610a40610d9b565b60008211610a7f5760405162461bcd60e51b8152600401808060200182810382526026815260200180610e416026913960400191505060405180910390fd5b82610a995750604080516020810190915260008152610ba4565b6001600160901b038311610b3557600082607085901b81610ab657fe5b0490506001600160e01b03811115610b15576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b6040518060200160405280826001600160e01b0316815250915050610ba4565b6000610b4684600160701b85610c45565b90506001600160e01b03811115610b15576040805162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f770000604482015290519081900360640190fd5b92915050565b610bb2610dad565b6000821580610bd857505082516001600160e01b031682810290838281610bd557fe5b04145b610c29576040805162461bcd60e51b815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f7700000000000000604482015290519081900360640190fd5b60408051602081019091529081529392505050565b5160701c90565b6000806000610c548686610cfe565b9150915060008480610c6257fe5b868809905082811115610c76576001820391505b918290039181610c9457848381610c8957fe5b049350505050610392565b848210610ce8576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610cf3838387610d2b565b979650505050505050565b6000808060001984860990508385029250828103915082811015610d23576001820391505b509250929050565b60008181038216808381610d3b57fe5b049250808581610d4757fe5b049450808160000381610d5657fe5b60028581038087028203028087028203028087028203028087028203028087028203028087028203029586029003909402930460010193909302939093010292915050565b60408051602081019091526000815290565b604051806020016040528060008152509056fe536c6964696e6757696e646f774f7261636c653a204d495353494e475f484953544f524943414c5f4f42534552564154494f4e41737472614c6962726172793a204944454e544943414c5f414444524553534553536c6964696e6757696e646f774f7261636c653a20554e45585045435445445f54494d455f454c41505345444669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206279207a65726fa26469706673582212209a5349fa599572864e86ce5b8e09218e00f00d31d21f947c60277aba0b2a6a5464736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC45A0155 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0xC640752D EQ PUSH2 0x169 JUMPI DUP1 PUSH4 0xDBAAD32F EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0xE4463EB2 EQ PUSH2 0x1B6 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x556F0DC7 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x8A14117A EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x8C86F1E4 EQ PUSH2 0xC5 JUMPI DUP1 PUSH4 0xBFCC8E42 EQ PUSH2 0xFB JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x95 PUSH2 0x1BE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH2 0x1E2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x206 JUMP JUMPDEST PUSH2 0x127 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x111 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x399 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14D PUSH2 0x3D8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x197 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x17F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3FC JUMP JUMPDEST STOP JUMPDEST PUSH2 0x95 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x539 JUMP JUMPDEST PUSH2 0xB3 PUSH2 0x59C JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x234 PUSH32 0x0 DUP7 DUP6 PUSH2 0x5C0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x241 DUP3 PUSH2 0x680 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP TIMESTAMP SUB PUSH32 0x0 DUP2 GT ISZERO PUSH2 0x2A7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDC1 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x0 PUSH1 0x2 MUL PUSH32 0x0 SUB DUP2 LT ISZERO PUSH2 0x32B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE15 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x337 DUP6 PUSH2 0x70E JUMP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x348 DUP11 DUP10 PUSH2 0x8FD JUMP JUMPDEST POP SWAP1 POP DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x382 JUMPI PUSH2 0x375 DUP6 PUSH1 0x1 ADD SLOAD DUP5 DUP7 DUP13 PUSH2 0x9DB JUMP JUMPDEST SWAP7 POP POP POP POP POP POP POP PUSH2 0x392 JUMP JUMPDEST PUSH2 0x375 DUP6 PUSH1 0x2 ADD SLOAD DUP4 DUP7 DUP13 PUSH2 0x9DB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x3B2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP4 POP SWAP1 SWAP2 POP DUP4 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x429 PUSH32 0x0 DUP5 DUP5 PUSH2 0x5C0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP JUMPDEST PUSH32 0x0 PUSH1 0xFF AND DUP2 LT ISZERO PUSH2 0x49A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP1 DUP2 ADD DUP3 SSTORE SWAP2 MSTORE ADD PUSH2 0x446 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x4A6 TIMESTAMP PUSH2 0x539 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH1 0xFF DUP5 AND SWAP1 DUP2 LT PUSH2 0x4D2 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 PUSH1 0x3 SWAP1 SWAP2 MUL ADD DUP1 SLOAD SWAP1 SWAP2 POP TIMESTAMP SUB PUSH32 0x0 DUP2 GT ISZERO PUSH2 0x531 JUMPI PUSH1 0x0 DUP1 PUSH2 0x51D DUP7 PUSH2 0x70E JUMP JUMPDEST POP TIMESTAMP DUP7 SSTORE PUSH1 0x1 DUP7 ADD SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP6 ADD SSTORE POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 DUP4 DUP2 PUSH2 0x565 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH32 0x0 PUSH1 0xFF AND DUP2 DUP2 PUSH2 0x594 JUMPI INVALID JUMPDEST MOD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x5CF DUP6 DUP6 PUSH2 0x8FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x68C TIMESTAMP PUSH2 0x539 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH32 0x0 PUSH1 0xFF AND DUP3 PUSH1 0x1 ADD PUSH1 0xFF AND DUP2 PUSH2 0x6C2 JUMPI INVALID JUMPDEST MOD SWAP1 POP PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x6F7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x71B PUSH2 0xA2E JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5909C0D5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x756 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x76A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x5A3D5493 PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP2 PUSH4 0x5A3D5493 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7DA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x240BC6B PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP2 PUSH4 0x902F1AC SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x83C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x850 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x866 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP PUSH4 0xFFFFFFFF DUP1 DUP3 AND SWAP1 DUP6 AND EQ PUSH2 0x8F3 JUMPI DUP1 DUP5 SUB PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x8AC PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB DUP1 DUP7 AND SWAP1 DUP8 AND PUSH2 0xA38 JUMP JUMPDEST PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND MUL DUP8 ADD SWAP7 POP DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x8E1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x70 SHL SUB AND PUSH2 0xA38 JUMP JUMPDEST MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND MUL SWAP6 SWAP1 SWAP6 ADD SWAP5 POP JUMPDEST POP POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x951 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xDF4 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x971 JUMPI DUP3 DUP5 PUSH2 0x974 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x9D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E5 PUSH2 0xD9B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP6 DUP9 DUP9 SUB DUP2 PUSH2 0x9FB JUMPI INVALID JUMPDEST DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND SWAP1 MSTORE SWAP1 POP PUSH2 0xA1B PUSH2 0xA16 DUP3 DUP6 PUSH2 0xBAA JUMP JUMPDEST PUSH2 0xC3E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB AND SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0xFFFFFFFF TIMESTAMP AND SWAP1 JUMP JUMPDEST PUSH2 0xA40 PUSH2 0xD9B JUMP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xA7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE41 PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xA99 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE PUSH2 0xBA4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x90 SHL SUB DUP4 GT PUSH2 0xB35 JUMPI PUSH1 0x0 DUP3 PUSH1 0x70 DUP6 SWAP1 SHL DUP2 PUSH2 0xAB6 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 GT ISZERO PUSH2 0xB15 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP2 MSTORE POP SWAP2 POP POP PUSH2 0xBA4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB46 DUP5 PUSH1 0x1 PUSH1 0x70 SHL DUP6 PUSH2 0xC45 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP2 GT ISZERO PUSH2 0xB15 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6672616374696F6E3A206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xBB2 PUSH2 0xDAD JUMP JUMPDEST PUSH1 0x0 DUP3 ISZERO DUP1 PUSH2 0xBD8 JUMPI POP POP DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND DUP3 DUP2 MUL SWAP1 DUP4 DUP3 DUP2 PUSH2 0xBD5 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xC29 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669786564506F696E743A3A6D756C3A206F766572666C6F7700000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE SWAP1 DUP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST MLOAD PUSH1 0x70 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xC54 DUP7 DUP7 PUSH2 0xCFE JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xC62 JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xC94 JUMPI DUP5 DUP4 DUP2 PUSH2 0xC89 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0x392 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xCE8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xCF3 DUP4 DUP4 DUP8 PUSH2 0xD2B JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0xD23 JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0xD3B JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0xD47 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0xD56 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP INVALID MSTORE8 PUSH13 0x6964696E6757696E646F774F72 PUSH2 0x636C PUSH6 0x3A204D495353 0x49 0x4E SELFBALANCE 0x5F 0x48 0x49 MSTORE8 SLOAD 0x4F MSTORE 0x49 NUMBER COINBASE 0x4C 0x5F 0x4F TIMESTAMP MSTORE8 GASLIMIT MSTORE JUMP COINBASE SLOAD 0x49 0x4F 0x4E COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 MSTORE8 PUSH13 0x6964696E6757696E646F774F72 PUSH2 0x636C PUSH6 0x3A20554E4558 POP GASLIMIT NUMBER SLOAD GASLIMIT DIFFICULTY 0x5F SLOAD 0x49 0x4D GASLIMIT 0x5F GASLIMIT 0x4C COINBASE POP MSTORE8 GASLIMIT DIFFICULTY CHAINID PUSH10 0x786564506F696E743A3A PUSH7 0x72616374696F6E GASPRICE KECCAK256 PUSH5 0x6976697369 PUSH16 0x6E206279207A65726FA2646970667358 0x22 SLT KECCAK256 SWAP11 MSTORE8 0x49 STATICCALL MSIZE SWAP6 PUSH19 0x864E86CE5B8E09218E00F00D31D21F947C6027 PUSH27 0xBA0B2A6A5464736F6C634300060600330000000000000000000000 ","sourceMap":"636:5685:9:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;636:5685:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1575:34:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;990:32;;;:::i;:::-;;;;;;;;;;;;;;;;5269:1050;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;5269:1050:9;;;;;;;;;;;;;;;;;:::i;1843:57::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;1843:57:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;854:32;;;:::i;:::-;;;;-1:-1:-1;;;;;854:32:9;;;;;;;;;;;;;;3305:1042;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;3305:1042:9;;;;;;;;;;:::i;:::-;;2421:185;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;2421:185:9;;:::i;1726:32::-;;;:::i;1575:34::-;;;:::o;990:32::-;;;:::o;5269:1050::-;5359:14;5385:12;5400:48;5421:7;5430;5439:8;5400:20;:48::i;:::-;5385:63;;5458:36;5497:33;5525:4;5497:27;:33::i;:::-;5578:26;;5458:72;;-1:-1:-1;5560:15:9;:44;5637:10;5622:25;;;5614:89;;;;-1:-1:-1;;;5614:89:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5781:10;5794:1;5781:14;5768:10;:27;5753:11;:42;;5745:99;;;;-1:-1:-1;;;5745:99:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5856:21;5879;5905:48;5948:4;5905:42;:48::i;:::-;5855:98;;;;;5964:14;5983:42;6007:7;6016:8;5983:23;:42::i;:::-;5963:62;;;6050:7;-1:-1:-1;;;;;6040:17:9;:6;-1:-1:-1;;;;;6040:17:9;;6036:277;;;6080:92;6097:16;:33;;;6132:16;6150:11;6163:8;6080:16;:92::i;:::-;6073:99;;;;;;;;;;6036:277;6210:92;6227:16;:33;;;6262:16;6280:11;6293:8;6210:16;:92::i;5269:1050::-;;;;;;:::o;1843:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1843:57:9;;-1:-1:-1;1843:57:9;:::o;854:32::-;;;:::o;3305:1042::-;3372:12;3387:45;3408:7;3417:6;3425;3387:20;:45::i;:::-;-1:-1:-1;;;;;3529:22:9;;3520:6;3529:22;;;;;;;;;;:29;3372:60;;-1:-1:-1;3515:121:9;3564:11;3560:15;;:1;:15;3515:121;;;-1:-1:-1;;;;;3596:22:9;;:16;:22;;;;;;;;;;27:10:-1;;3596:29:9;23:18:-1;;;45:23;;3596:29:9;;3577:3;3515:121;;;;3700:22;3725:35;3744:15;3725:18;:35::i;:::-;-1:-1:-1;;;;;3804:22:9;;3770:31;3804:22;;;;;;;;;;:40;;3700:60;;-1:-1:-1;3770:31:9;;3804:40;;;;;;;;;;;;;;;;;;;;;;;3982:21;;3804:40;;-1:-1:-1;3964:15:9;:39;4031:10;4017:24;;4013:328;;;4058:21;4081;4107:48;4150:4;4107:42;:48::i;:::-;-1:-1:-1;4193:15:9;4169:39;;4222:28;;;:47;;;;4283:28;;;:47;-1:-1:-1;;4013:328:9;3305:1042;;;;;;:::o;2421:185::-;2486:11;2509:16;2540:10;2528:9;:22;;;;;;2509:41;;2587:11;2573:25;;:11;:25;;;;;;;2421:185;-1:-1:-1;;;2421:185:9:o;1726:32::-;;;:::o;738:633:18:-;857:12;882:14;898;916:26;927:6;935;916:10;:26::i;:::-;1154:32;;;-1:-1:-1;;1154:32:18;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1154:32:18;;;;;1144:43;;;;;;-1:-1:-1;;;;;;1036:286:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1036:286:18;;;;;;;1005:335;;;;;;;;;738:633;-1:-1:-1;;;;;738:633:18:o;2727:425:9:-;2800:36;2848:22;2873:35;2892:15;2873:18;:35::i;:::-;2848:60;;3005:27;3060:11;3035:36;;3036:16;3055:1;3036:20;3035:36;;;;;;;;3005:66;;3100:16;:22;3117:4;-1:-1:-1;;;;;3100:22:9;-1:-1:-1;;;;;3100:22:9;;;;;;;;;;;;3123:21;3100:45;;;;;;;;;;;;;;;;;;;;3081:64;;2727:425;;;;;:::o;591:1028:20:-;675:21;698;721;771:23;:21;:23::i;:::-;754:40;;834:4;-1:-1:-1;;;;;823:37:20;;:39;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;823:39:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;823:39:20;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;823:39:20;891;;;-1:-1:-1;;;891:39:20;;;;823;;-1:-1:-1;;;;;;891:37:20;;;;;:39;;;;;823;;891;;;;;;;;:37;:39;;;2:2:-1;;;;27:1;24;17:12;2:2;891:39:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;891:39:20;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;891:39:20;1107:30;;;-1:-1:-1;;;1107:30:20;;;;891:39;;-1:-1:-1;1042:16:20;;;;;;-1:-1:-1;;;;;1107:28:20;;;;;:30;;;;;;;;;;;;;;:28;:30;;;2:2:-1;;;;27:1;24;17:12;2:2;1107:30:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1107:30:20;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1107:30:20;;;;;;;;;;;;;-1:-1:-1;1107:30:20;;-1:-1:-1;1107:30:20;-1:-1:-1;1151:36:20;;;;;;;;1147:466;;1271:35;;;1414:62;;;1419:39;-1:-1:-1;;;;;1419:39:20;;;;;;:19;:39::i;:::-;:42;;;-1:-1:-1;;;;;1414:48:20;:62;1394:82;;;;1591:11;1540:62;;1545:39;1565:8;-1:-1:-1;;;;;1545:39:20;1575:8;-1:-1:-1;;;;;1545:39:20;:19;:39::i;:::-;:42;-1:-1:-1;;;;;1540:48:20;:62;1520:82;;;;;-1:-1:-1;1147:466:20;591:1028;;;;;;;;:::o;260:389:18:-;359:14;375;423:6;-1:-1:-1;;;;;413:16:18;:6;-1:-1:-1;;;;;413:16:18;;;405:62;;;;-1:-1:-1;;;405:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:6;-1:-1:-1;;;;;496:15:18;:6;-1:-1:-1;;;;;496:15:18;;:77;;558:6;566;496:77;;;527:6;535;496:77;477:96;;-1:-1:-1;477:96:18;-1:-1:-1;;;;;;591:20:18;;583:59;;;;;-1:-1:-1;;;583:59:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;260:389;;;;;:::o;4547:433:9:-;4702:14;4760:40;;:::i;:::-;4803:110;;;;;;;;4891:11;4867:20;4846:18;:41;4845:57;;;;;;-1:-1:-1;;;;;4803:110:9;;;4760:153;-1:-1:-1;4935:38:9;:26;4760:153;4952:8;4935:16;:26::i;:::-;:36;:38::i;:::-;-1:-1:-1;;;;;4923:50:9;;4547:433;-1:-1:-1;;;;;;4547:433:9:o;367:121:20:-;455:25;:15;:25;;367:121::o;4550:706:23:-;4631:16;;:::i;:::-;4681:1;4667:11;:15;4659:66;;;;-1:-1:-1;;;4659:66:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4739:14;4735:50;;-1:-1:-1;4762:23:23;;;;;;;;;-1:-1:-1;4762:23:23;;4755:30;;4735:50;-1:-1:-1;;;;;4800:24:23;;4796:454;;4840:14;4885:11;555:3;4858:23;;;4885:11;4857:39;;;;;;-1:-1:-1;;;;;;4918:21:23;;;4910:64;;;;;-1:-1:-1;;;4910:64:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;4995:26;;;;;;;;5013:6;-1:-1:-1;;;;;4995:26:23;;;;4988:33;;;;;4796:454;5052:14;5069:45;5085:9;-1:-1:-1;;;5102:11:23;5069:15;:45::i;:::-;5052:62;-1:-1:-1;;;;;;5136:21:23;;;5128:64;;;;;-1:-1:-1;;;5128:64:23;;;;;;;;;;;;;;;;;;;;;;;;;;;4796:454;4550:706;;;;:::o;1718:237::-;1788:16;;:::i;:::-;1816:9;1847:6;;;:42;;-1:-1:-1;;1882:7:23;;-1:-1:-1;;;;;1857:32:23;1862:11;;;;1877:1;1862:11;1877:1;1857:21;;;;;:32;1847:42;1839:80;;;;;-1:-1:-1;;;1839:80:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;1936:12;;;;;;;;;;;;;1718:237;-1:-1:-1;;;1718:237:23:o;1496:128::-;1595:7;555:3;1595:21;;1496:128::o;897:373:24:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;-1:-1:-1;;;1186:44:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;897:373;-1:-1:-1;;;;;;;897:373:24:o;216:206::-;278:9;;;-1:-1:-1;;333:1:24;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:24:o;636:5685:9:-;;;;;;;;;;-1:-1:-1;636:5685:9;;;:::o;:::-;;;;;;;;;;;;;;:::o"},"methodIdentifiers":{"consult(address,uint256,address)":"8c86f1e4","factory()":"c45a0155","granularity()":"556f0dc7","observationIndexOf(uint256)":"dbaad32f","pairObservations(address,uint256)":"bfcc8e42","periodSize()":"e4463eb2","update(address,address)":"c640752d","windowSize()":"8a14117a"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"windowSize_\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"granularity_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"}],\"name\":\"consult\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"granularity\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"observationIndexOf\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairObservations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price0Cumulative\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price1Cumulative\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"periodSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"update\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"windowSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/examples/ExampleSlidingWindowOracle.sol\":\"ExampleSlidingWindowOracle\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraFactory.sol\":{\"keccak256\":\"0x1d8cfacb873119cce028428fbfc6741a17f9dff23726b6f9262be38b04d2147d\",\"urls\":[\"bzz-raw://8161eaf5b9b22d8d7bb774f33dd0465b3796decc507f6509d02800052b6da351\",\"dweb:/ipfs/QmWhWSfZqWbx9iBRsV2PB2oEGcV7tgp8TthHH6ZYbN2JCP\"]},\"contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"contracts/periphery/examples/ExampleSlidingWindowOracle.sol\":{\"keccak256\":\"0xd2ee30d874bc1ab97bed2e498f7c9ac75098aa1bd732052efe48b159d84d8e01\",\"urls\":[\"bzz-raw://177f5b235c6f7436ae766350e279b47c9b8db8d749e3c0df635f29e160ca380e\",\"dweb:/ipfs/QmXJBvKamHmusvbN9FegNZfWyEtGpEajDsLFcPtDWRGdbs\"]},\"contracts/periphery/libraries/AstraLibrary.sol\":{\"keccak256\":\"0xae44fd35f2a3c3498de7cbc39ec1f34ac497d62bfa993d07795ae3bc124b2b31\",\"urls\":[\"bzz-raw://637a1e7bb00c545f7ba83851539379085fe791497a5b36cff1dee4a34e0056d9\",\"dweb:/ipfs/QmaFeUq9bYst2tN6zfTNqGW48kACsvXaofZvKtQP4DTqWh\"]},\"contracts/periphery/libraries/AstraOracleLibrary.sol\":{\"keccak256\":\"0x424adb3090303ecc84ae9db02fddacce5ca914d37606dcc599122be73be9e4e2\",\"urls\":[\"bzz-raw://526c8a6e6057b44d2bfa85ef3b8e10bcb78f42acc5250f7d45712e55c683e492\",\"dweb:/ipfs/QmVXKXwJvkcuE6d26GRowfDSq5k56DP59JKKxDnU2GZfru\"]},\"contracts/periphery/libraries/Babylonian.sol\":{\"keccak256\":\"0xeb1c2a281a00f4660775f75ccfa1e51fbe1d75f86aeb9d0d297151ecdb900177\",\"urls\":[\"bzz-raw://68515f0265381bddfb1d1356ea10ce4e5784276fc09f197fcdcedfa5c75cc069\",\"dweb:/ipfs/QmXWVVPnuJwRUAu3Qpu1s7Fyc5WPQxmZPczVEe5cJ5wVHZ\"]},\"contracts/periphery/libraries/BitMath.sol\":{\"keccak256\":\"0x19f84d5268286794b44939ec0d85b3c6f59e133f826cdbd9e40112fc94919bb7\",\"urls\":[\"bzz-raw://d21c67ed58cf667d052e141df2fba76c46c159edcc45eb897c908c20c69d2727\",\"dweb:/ipfs/QmUyKz1992wgR8nYAzBuQzjBAKMxLAN3hTgzpYJxusbmVH\"]},\"contracts/periphery/libraries/FixedPoint.sol\":{\"keccak256\":\"0x127ecf7db1a5b5a38610f3f11337715fc00ba57ee412fa6978dcf2cf58eccdf7\",\"urls\":[\"bzz-raw://f7027d233bc1f41809e484d6866ddf2408897994cbe8c9ab99f397767bbd13db\",\"dweb:/ipfs/QmPr72ABBnRTSoZZmkygzgskZzogZb1M74U9Tf2DHH62xn\"]},\"contracts/periphery/libraries/FullMath.sol\":{\"keccak256\":\"0xc4ffcf28169f73fc9fdd1f82345d6d4fcccf3fd5aea83c133437c25e4e0950a9\",\"urls\":[\"bzz-raw://c9257a47501005f0a648bc4801ef4abc33843681aaf03a6d0c43d46b69e37407\",\"dweb:/ipfs/QmciHvDrqhxs5fjsrm9aNq29FZXpunMn17n2wWj83Zsh3B\"]},\"contracts/periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1\",\"urls\":[\"bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c\",\"dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg\"]}},\"version\":1}"}},"contracts/periphery/examples/ExampleSwapToPrice.sol":{"ExampleSwapToPrice":{"abi":[{"inputs":[{"internalType":"address","name":"factory_","type":"address"},{"internalType":"contract IAstraRouter01","name":"router_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IAstraRouter01","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"truePriceTokenA","type":"uint256"},{"internalType":"uint256","name":"truePriceTokenB","type":"uint256"},{"internalType":"uint256","name":"maxSpendTokenA","type":"uint256"},{"internalType":"uint256","name":"maxSpendTokenB","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapToPrice","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60c060405234801561001057600080fd5b50604051610fb9380380610fb98339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b811660a052911b1660805260805160601c60a05160601c610f2c61008d6000398061019152806104af52508061025b52806102fe52806104d35250610f2c6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063bef90fd314610046578063c45a01551461009d578063f887ea40146100c1575b600080fd5b61009b600480360361010081101561005d57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356100c9565b005b6100a56104ad565b604080516001600160a01b039092168252519081900360200190f35b6100a56104d1565b85158015906100d757508415155b610128576040805162461bcd60e51b815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604482015290519081900360640190fd5b8315158061013557508215155b610186576040805162461bcd60e51b815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604482015290519081900360640190fd5b6000806000806101b77f00000000000000000000000000000000000000000000000000000000000000008d8d6104f5565b915091506101c78a8a84846105c3565b909450925050508061020a5760405162461bcd60e51b8152600401808060200182810382526022815260200180610ed56022913960400191505060405180910390fd5b6000826102175785610219565b865b905080821115610227578091505b600083610234578a610236565b8b5b9050600084610245578c610247565b8b5b9050610255823330876106af565b610280827f00000000000000000000000000000000000000000000000000000000000000008661080c565b604080516002808252606080830184529260208301908036833701905050905082816000815181106102ae57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081816001815181106102dc57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166338ed1739866000848c8c6040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156103aa578181015183820152602001610392565b505050509050019650505050505050600060405180830381600087803b1580156103d357600080fd5b505af11580156103e7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561041057600080fd5b810190808051604051939291908464010000000082111561043057600080fd5b90830190602082018581111561044557600080fd5b825186602082028301116401000000008211171561046257600080fd5b82525081516020918201928201910280838360005b8381101561048f578181015183820152602001610477565b50505050905001604052505050505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006105048585610960565b509050600080610515888888610a3e565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561054d57600080fd5b505afa158015610561573d6000803e3d6000fd5b505050506040513d606081101561057757600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b03878116908416146105b15780826105b4565b81815b90999098509650505050505050565b600080856105d2858786610afe565b10915060006105e7858563ffffffff610bb916565b90506000610639610634610603846103e863ffffffff610bb916565b8661060e5789610610565b8a5b61062f6103e589610621578d610623565b8c5b9063ffffffff610bb916565b610afe565b610c22565b905060006103e58561065c57610657876103e863ffffffff610bb916565b61066e565b61066e886103e863ffffffff610bb916565b8161067557fe5b049050808210156106905750600093508392506106a6915050565b6106a0828263ffffffff610d6a16565b93505050505b94509492505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106107345780518252601f199092019160209182019101610715565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610796576040519150601f19603f3d011682016040523d82523d6000602084013e61079b565b606091505b50915091508180156107c95750805115806107c957508080602001905160208110156107c657600080fd5b50515b6108045760405162461bcd60e51b8152600401808060200182810382526031815260200180610e796031913960400191505060405180910390fd5b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106108895780518252601f19909201916020918201910161086a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108eb576040519150601f19603f3d011682016040523d82523d6000602084013e6108f0565b606091505b509150915081801561091e57508051158061091e575080806020019051602081101561091b57600080fd5b50515b6109595760405162461bcd60e51b815260040180806020018281038252602b815260200180610eaa602b913960400191505060405180910390fd5b5050505050565b600080826001600160a01b0316846001600160a01b031614156109b45760405162461bcd60e51b8152600401808060200182810382526021815260200180610e586021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b0316106109d45782846109d7565b83835b90925090506001600160a01b038216610a37576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b6000806000610a4d8585610960565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000806000610b0d8686610dba565b9150915060008480610b1b57fe5b868809905082811115610b2f576001820391505b918290039181610b4d57848381610b4257fe5b049350505050610bb2565b848210610ba1576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610bac838387610de7565b93505050505b9392505050565b6000811580610bd457505080820282828281610bd157fe5b04145b610c1c576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b600081610c3157506000610d65565b816001600160801b8210610c4a5760809190911c9060401b5b680100000000000000008210610c655760409190911c9060201b5b6401000000008210610c7c5760209190911c9060101b5b620100008210610c915760109190911c9060081b5b6101008210610ca55760089190911c9060041b5b60108210610cb85760049190911c9060021b5b60088210610cc45760011b5b6001818581610ccf57fe5b048201901c90506001818581610ce157fe5b048201901c90506001818581610cf357fe5b048201901c90506001818581610d0557fe5b048201901c90506001818581610d1757fe5b048201901c90506001818581610d2957fe5b048201901c90506001818581610d3b57fe5b048201901c90506000818581610d4d57fe5b049050808210610d5d5780610d5f565b815b93505050505b919050565b80820382811115610c1c576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6000808060001984860990508385029250828103915082811015610ddf576001820391505b509250929050565b60008181038216808381610df757fe5b049250808581610e0357fe5b049450808160000381610e1257fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe41737472614c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65644578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f494ea2646970667358221220caa4b073ceaaf8da67090774b9f7769edda296906e873a6e0f9fd4bd0071c3b964736f6c63430006060033","opcodes":"PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xFB9 CODESIZE SUB DUP1 PUSH2 0xFB9 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP3 DUP4 SHL DUP2 AND PUSH1 0xA0 MSTORE SWAP2 SHL AND PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH2 0xF2C PUSH2 0x8D PUSH1 0x0 CODECOPY DUP1 PUSH2 0x191 MSTORE DUP1 PUSH2 0x4AF MSTORE POP DUP1 PUSH2 0x25B MSTORE DUP1 PUSH2 0x2FE MSTORE DUP1 PUSH2 0x4D3 MSTORE POP PUSH2 0xF2C PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBEF90FD3 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x9D JUMPI DUP1 PUSH4 0xF887EA40 EQ PUSH2 0xC1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0xC9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA5 PUSH2 0x4AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA5 PUSH2 0x4D1 JUMP JUMPDEST DUP6 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xD7 JUMPI POP DUP5 ISZERO ISZERO JUMPDEST PUSH2 0x128 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4578616D706C6553776170546F50726963653A205A45524F5F50524943450000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 ISZERO ISZERO DUP1 PUSH2 0x135 JUMPI POP DUP3 ISZERO ISZERO JUMPDEST PUSH2 0x186 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4578616D706C6553776170546F50726963653A205A45524F5F5350454E440000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1B7 PUSH32 0x0 DUP14 DUP14 PUSH2 0x4F5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x1C7 DUP11 DUP11 DUP5 DUP5 PUSH2 0x5C3 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP DUP1 PUSH2 0x20A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xED5 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x217 JUMPI DUP6 PUSH2 0x219 JUMP JUMPDEST DUP7 JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x227 JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0x234 JUMPI DUP11 PUSH2 0x236 JUMP JUMPDEST DUP12 JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH2 0x245 JUMPI DUP13 PUSH2 0x247 JUMP JUMPDEST DUP12 JUMPDEST SWAP1 POP PUSH2 0x255 DUP3 CALLER ADDRESS DUP8 PUSH2 0x6AF JUMP JUMPDEST PUSH2 0x280 DUP3 PUSH32 0x0 DUP7 PUSH2 0x80C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2DC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38ED1739 DUP7 PUSH1 0x0 DUP5 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3AA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x392 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x48F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x477 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x504 DUP6 DUP6 PUSH2 0x960 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x515 DUP9 DUP9 DUP9 PUSH2 0xA3E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x561 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x5B1 JUMPI DUP1 DUP3 PUSH2 0x5B4 JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH2 0x5D2 DUP6 DUP8 DUP7 PUSH2 0xAFE JUMP JUMPDEST LT SWAP2 POP PUSH1 0x0 PUSH2 0x5E7 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xBB9 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x639 PUSH2 0x634 PUSH2 0x603 DUP5 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xBB9 AND JUMP JUMPDEST DUP7 PUSH2 0x60E JUMPI DUP10 PUSH2 0x610 JUMP JUMPDEST DUP11 JUMPDEST PUSH2 0x62F PUSH2 0x3E5 DUP10 PUSH2 0x621 JUMPI DUP14 PUSH2 0x623 JUMP JUMPDEST DUP13 JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xBB9 AND JUMP JUMPDEST PUSH2 0xAFE JUMP JUMPDEST PUSH2 0xC22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3E5 DUP6 PUSH2 0x65C JUMPI PUSH2 0x657 DUP8 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xBB9 AND JUMP JUMPDEST PUSH2 0x66E JUMP JUMPDEST PUSH2 0x66E DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xBB9 AND JUMP JUMPDEST DUP2 PUSH2 0x675 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x690 JUMPI POP PUSH1 0x0 SWAP4 POP DUP4 SWAP3 POP PUSH2 0x6A6 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6A0 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD6A AND JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x734 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x715 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x796 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x79B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x7C9 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x7C9 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x804 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE79 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x889 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x86A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x8EB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x8F0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x91E JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x91E JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x91B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x959 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xEAA PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE58 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x9D4 JUMPI DUP3 DUP5 PUSH2 0x9D7 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA37 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA4D DUP6 DUP6 PUSH2 0x960 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xB0D DUP7 DUP7 PUSH2 0xDBA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xB1B JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xB2F JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xB4D JUMPI DUP5 DUP4 DUP2 PUSH2 0xB42 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xBB2 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xBA1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xBAC DUP4 DUP4 DUP8 PUSH2 0xDE7 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xBD4 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xBD1 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xC1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6D756C2D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xC31 JUMPI POP PUSH1 0x0 PUSH2 0xD65 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL DUP3 LT PUSH2 0xC4A JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0xC65 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0xC7C JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0xC91 JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0xCA5 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0xCB8 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0xCC4 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xCCF JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xCE1 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xCF3 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xD05 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xD17 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xD29 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xD3B JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0xD4D JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0xD5D JUMPI DUP1 PUSH2 0xD5F JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xC1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0xDDF JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0xDF7 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0xE03 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0xE12 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C6564547261 PUSH15 0x7366657248656C7065723A3A736166 PUSH6 0x417070726F76 PUSH6 0x3A2061707072 PUSH16 0x7665206661696C65644578616D706C65 MSTORE8 PUSH24 0x6170546F50726963653A205A45524F5F414D4F554E545F49 0x4E LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA LOG4 0xB0 PUSH20 0xCEAAF8DA67090774B9F7769EDDA296906E873A6E 0xF SWAP16 0xD4 0xBD STOP PUSH18 0xC3B964736F6C634300060600330000000000 ","sourceMap":"361:2398:10:-:0;;;511:122;5:9:-1;2:2;;;27:1;24;17:12;2:2;511:122:10;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;511:122:10;;;;;;;-1:-1:-1;;;;;;582:18:10;;;;;;;;610:16;;;;;361:2398;;;;;;;;;;;;;;;;"},"deployedBytecode":{"immutableReferences":{"5085":[{"length":32,"start":603},{"length":32,"start":766},{"length":32,"start":1235}],"5087":[{"length":32,"start":401},{"length":32,"start":1199}]},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100415760003560e01c8063bef90fd314610046578063c45a01551461009d578063f887ea40146100c1575b600080fd5b61009b600480360361010081101561005d57600080fd5b506001600160a01b038135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e001356100c9565b005b6100a56104ad565b604080516001600160a01b039092168252519081900360200190f35b6100a56104d1565b85158015906100d757508415155b610128576040805162461bcd60e51b815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f50524943450000604482015290519081900360640190fd5b8315158061013557508215155b610186576040805162461bcd60e51b815260206004820152601e60248201527f4578616d706c6553776170546f50726963653a205a45524f5f5350454e440000604482015290519081900360640190fd5b6000806000806101b77f00000000000000000000000000000000000000000000000000000000000000008d8d6104f5565b915091506101c78a8a84846105c3565b909450925050508061020a5760405162461bcd60e51b8152600401808060200182810382526022815260200180610ed56022913960400191505060405180910390fd5b6000826102175785610219565b865b905080821115610227578091505b600083610234578a610236565b8b5b9050600084610245578c610247565b8b5b9050610255823330876106af565b610280827f00000000000000000000000000000000000000000000000000000000000000008661080c565b604080516002808252606080830184529260208301908036833701905050905082816000815181106102ae57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505081816001815181106102dc57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166338ed1739866000848c8c6040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156103aa578181015183820152602001610392565b505050509050019650505050505050600060405180830381600087803b1580156103d357600080fd5b505af11580156103e7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561041057600080fd5b810190808051604051939291908464010000000082111561043057600080fd5b90830190602082018581111561044557600080fd5b825186602082028301116401000000008211171561046257600080fd5b82525081516020918201928201910280838360005b8381101561048f578181015183820152602001610477565b50505050905001604052505050505050505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060006105048585610960565b509050600080610515888888610a3e565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561054d57600080fd5b505afa158015610561573d6000803e3d6000fd5b505050506040513d606081101561057757600080fd5b5080516020909101516dffffffffffffffffffffffffffff91821693501690506001600160a01b03878116908416146105b15780826105b4565b81815b90999098509650505050505050565b600080856105d2858786610afe565b10915060006105e7858563ffffffff610bb916565b90506000610639610634610603846103e863ffffffff610bb916565b8661060e5789610610565b8a5b61062f6103e589610621578d610623565b8c5b9063ffffffff610bb916565b610afe565b610c22565b905060006103e58561065c57610657876103e863ffffffff610bb916565b61066e565b61066e886103e863ffffffff610bb916565b8161067557fe5b049050808210156106905750600093508392506106a6915050565b6106a0828263ffffffff610d6a16565b93505050505b94509492505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251600094606094938a169392918291908083835b602083106107345780518252601f199092019160209182019101610715565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610796576040519150601f19603f3d011682016040523d82523d6000602084013e61079b565b606091505b50915091508180156107c95750805115806107c957508080602001905160208110156107c657600080fd5b50515b6108045760405162461bcd60e51b8152600401808060200182810382526031815260200180610e796031913960400191505060405180910390fd5b505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b178152925182516000946060949389169392918291908083835b602083106108895780518252601f19909201916020918201910161086a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146108eb576040519150601f19603f3d011682016040523d82523d6000602084013e6108f0565b606091505b509150915081801561091e57508051158061091e575080806020019051602081101561091b57600080fd5b50515b6109595760405162461bcd60e51b815260040180806020018281038252602b815260200180610eaa602b913960400191505060405180910390fd5b5050505050565b600080826001600160a01b0316846001600160a01b031614156109b45760405162461bcd60e51b8152600401808060200182810382526021815260200180610e586021913960400191505060405180910390fd5b826001600160a01b0316846001600160a01b0316106109d45782846109d7565b83835b90925090506001600160a01b038216610a37576040805162461bcd60e51b815260206004820152601a60248201527f41737472614c6962726172793a205a45524f5f41444452455353000000000000604482015290519081900360640190fd5b9250929050565b6000806000610a4d8585610960565b604080516bffffffffffffffffffffffff19606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501206001600160f81b031960688401529a90941b9093166069840152607d8301989098527f400e13fc6c59224f20228f0c0561806856ac34b7318f337f8012707c880c351f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6000806000610b0d8686610dba565b9150915060008480610b1b57fe5b868809905082811115610b2f576001820391505b918290039181610b4d57848381610b4257fe5b049350505050610bb2565b848210610ba1576040805162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f57000000000000604482015290519081900360640190fd5b610bac838387610de7565b93505050505b9392505050565b6000811580610bd457505080820282828281610bd157fe5b04145b610c1c576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b92915050565b600081610c3157506000610d65565b816001600160801b8210610c4a5760809190911c9060401b5b680100000000000000008210610c655760409190911c9060201b5b6401000000008210610c7c5760209190911c9060101b5b620100008210610c915760109190911c9060081b5b6101008210610ca55760089190911c9060041b5b60108210610cb85760049190911c9060021b5b60088210610cc45760011b5b6001818581610ccf57fe5b048201901c90506001818581610ce157fe5b048201901c90506001818581610cf357fe5b048201901c90506001818581610d0557fe5b048201901c90506001818581610d1757fe5b048201901c90506001818581610d2957fe5b048201901c90506001818581610d3b57fe5b048201901c90506000818581610d4d57fe5b049050808210610d5d5780610d5f565b815b93505050505b919050565b80820382811115610c1c576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6000808060001984860990508385029250828103915082811015610ddf576001820391505b509250929050565b60008181038216808381610df757fe5b049250808581610e0357fe5b049450808160000381610e1257fe5b6002858103808702820302808702820302808702820302808702820302808702820302808702820302958602900390940293046001019390930293909301029291505056fe41737472614c6962726172793a204944454e544943414c5f4144445245535345535472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645472616e7366657248656c7065723a3a73616665417070726f76653a20617070726f7665206661696c65644578616d706c6553776170546f50726963653a205a45524f5f414d4f554e545f494ea2646970667358221220caa4b073ceaaf8da67090774b9f7769edda296906e873a6e0f9fd4bd0071c3b964736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xBEF90FD3 EQ PUSH2 0x46 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x9D JUMPI DUP1 PUSH4 0xF887EA40 EQ PUSH2 0xC1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0xC0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0xC9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xA5 PUSH2 0x4AD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA5 PUSH2 0x4D1 JUMP JUMPDEST DUP6 ISZERO DUP1 ISZERO SWAP1 PUSH2 0xD7 JUMPI POP DUP5 ISZERO ISZERO JUMPDEST PUSH2 0x128 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4578616D706C6553776170546F50726963653A205A45524F5F50524943450000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 ISZERO ISZERO DUP1 PUSH2 0x135 JUMPI POP DUP3 ISZERO ISZERO JUMPDEST PUSH2 0x186 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4578616D706C6553776170546F50726963653A205A45524F5F5350454E440000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x1B7 PUSH32 0x0 DUP14 DUP14 PUSH2 0x4F5 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x1C7 DUP11 DUP11 DUP5 DUP5 PUSH2 0x5C3 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP POP DUP1 PUSH2 0x20A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xED5 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x217 JUMPI DUP6 PUSH2 0x219 JUMP JUMPDEST DUP7 JUMPDEST SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x227 JUMPI DUP1 SWAP2 POP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0x234 JUMPI DUP11 PUSH2 0x236 JUMP JUMPDEST DUP12 JUMPDEST SWAP1 POP PUSH1 0x0 DUP5 PUSH2 0x245 JUMPI DUP13 PUSH2 0x247 JUMP JUMPDEST DUP12 JUMPDEST SWAP1 POP PUSH2 0x255 DUP3 CALLER ADDRESS DUP8 PUSH2 0x6AF JUMP JUMPDEST PUSH2 0x280 DUP3 PUSH32 0x0 DUP7 PUSH2 0x80C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP1 DUP4 ADD DUP5 MSTORE SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP DUP2 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2DC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38ED1739 DUP7 PUSH1 0x0 DUP5 DUP13 DUP13 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3AA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x392 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP7 POP POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3E7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x410 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x48F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x477 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x504 DUP6 DUP6 PUSH2 0x960 JUMP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x515 DUP9 DUP9 DUP9 PUSH2 0xA3E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x54D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x561 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 POP AND SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP1 DUP5 AND EQ PUSH2 0x5B1 JUMPI DUP1 DUP3 PUSH2 0x5B4 JUMP JUMPDEST DUP2 DUP2 JUMPDEST SWAP1 SWAP10 SWAP1 SWAP9 POP SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH2 0x5D2 DUP6 DUP8 DUP7 PUSH2 0xAFE JUMP JUMPDEST LT SWAP2 POP PUSH1 0x0 PUSH2 0x5E7 DUP6 DUP6 PUSH4 0xFFFFFFFF PUSH2 0xBB9 AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x639 PUSH2 0x634 PUSH2 0x603 DUP5 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xBB9 AND JUMP JUMPDEST DUP7 PUSH2 0x60E JUMPI DUP10 PUSH2 0x610 JUMP JUMPDEST DUP11 JUMPDEST PUSH2 0x62F PUSH2 0x3E5 DUP10 PUSH2 0x621 JUMPI DUP14 PUSH2 0x623 JUMP JUMPDEST DUP13 JUMPDEST SWAP1 PUSH4 0xFFFFFFFF PUSH2 0xBB9 AND JUMP JUMPDEST PUSH2 0xAFE JUMP JUMPDEST PUSH2 0xC22 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3E5 DUP6 PUSH2 0x65C JUMPI PUSH2 0x657 DUP8 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xBB9 AND JUMP JUMPDEST PUSH2 0x66E JUMP JUMPDEST PUSH2 0x66E DUP9 PUSH2 0x3E8 PUSH4 0xFFFFFFFF PUSH2 0xBB9 AND JUMP JUMPDEST DUP2 PUSH2 0x675 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0x690 JUMPI POP PUSH1 0x0 SWAP4 POP DUP4 SWAP3 POP PUSH2 0x6A6 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x6A0 DUP3 DUP3 PUSH4 0xFFFFFFFF PUSH2 0xD6A AND JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE PUSH1 0x64 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP11 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x734 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x715 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x796 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x79B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x7C9 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x7C9 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x804 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE79 PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x95EA7B3 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x889 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x86A JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x8EB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x8F0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x91E JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x91E JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x91B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x959 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xEAA PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xE58 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x9D4 JUMPI DUP3 DUP5 PUSH2 0x9D7 JUMP JUMPDEST DUP4 DUP4 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA37 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x41737472614C6962726172793A205A45524F5F41444452455353000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xA4D DUP6 DUP6 PUSH2 0x960 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT PUSH1 0x60 SWAP5 DUP6 SHL DUP2 AND PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 DUP6 SHL DUP2 AND PUSH1 0x34 DUP4 ADD MSTORE DUP3 MLOAD PUSH1 0x28 DUP2 DUP5 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP4 ADD DUP5 MSTORE DUP1 MLOAD SWAP1 DUP6 ADD KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT PUSH1 0x68 DUP5 ADD MSTORE SWAP11 SWAP1 SWAP5 SHL SWAP1 SWAP4 AND PUSH1 0x69 DUP5 ADD MSTORE PUSH1 0x7D DUP4 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH32 0x400E13FC6C59224F20228F0C0561806856AC34B7318F337F8012707C880C351F PUSH1 0x9D DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP9 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xBD SWAP1 SWAP3 ADD SWAP1 SWAP8 MSTORE DUP1 MLOAD SWAP7 ADD SWAP6 SWAP1 SWAP6 KECCAK256 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xB0D DUP7 DUP7 PUSH2 0xDBA JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP5 DUP1 PUSH2 0xB1B JUMPI INVALID JUMPDEST DUP7 DUP9 MULMOD SWAP1 POP DUP3 DUP2 GT ISZERO PUSH2 0xB2F JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST SWAP2 DUP3 SWAP1 SUB SWAP2 DUP2 PUSH2 0xB4D JUMPI DUP5 DUP4 DUP2 PUSH2 0xB42 JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP PUSH2 0xBB2 JUMP JUMPDEST DUP5 DUP3 LT PUSH2 0xBA1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x46756C6C4D6174683A2046554C4C4449565F4F564552464C4F57000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xBAC DUP4 DUP4 DUP8 PUSH2 0xDE7 JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0xBD4 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0xBD1 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0xC1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6D756C2D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0xC31 JUMPI POP PUSH1 0x0 PUSH2 0xD65 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL DUP3 LT PUSH2 0xC4A JUMPI PUSH1 0x80 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x40 SHL JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0xC65 JUMPI PUSH1 0x40 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x20 SHL JUMPDEST PUSH5 0x100000000 DUP3 LT PUSH2 0xC7C JUMPI PUSH1 0x20 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x10 SHL JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0xC91 JUMPI PUSH1 0x10 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x8 SHL JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0xCA5 JUMPI PUSH1 0x8 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x4 SHL JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0xCB8 JUMPI PUSH1 0x4 SWAP2 SWAP1 SWAP2 SHR SWAP1 PUSH1 0x2 SHL JUMPDEST PUSH1 0x8 DUP3 LT PUSH2 0xCC4 JUMPI PUSH1 0x1 SHL JUMPDEST PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xCCF JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xCE1 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xCF3 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xD05 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xD17 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xD29 JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x1 DUP2 DUP6 DUP2 PUSH2 0xD3B JUMPI INVALID JUMPDEST DIV DUP3 ADD SWAP1 SHR SWAP1 POP PUSH1 0x0 DUP2 DUP6 DUP2 PUSH2 0xD4D JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 DUP3 LT PUSH2 0xD5D JUMPI DUP1 PUSH2 0xD5F JUMP JUMPDEST DUP2 JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0xC1C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP5 DUP7 MULMOD SWAP1 POP DUP4 DUP6 MUL SWAP3 POP DUP3 DUP2 SUB SWAP2 POP DUP3 DUP2 LT ISZERO PUSH2 0xDDF JUMPI PUSH1 0x1 DUP3 SUB SWAP2 POP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SUB DUP3 AND DUP1 DUP4 DUP2 PUSH2 0xDF7 JUMPI INVALID JUMPDEST DIV SWAP3 POP DUP1 DUP6 DUP2 PUSH2 0xE03 JUMPI INVALID JUMPDEST DIV SWAP5 POP DUP1 DUP2 PUSH1 0x0 SUB DUP2 PUSH2 0xE12 JUMPI INVALID JUMPDEST PUSH1 0x2 DUP6 DUP2 SUB DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL DUP1 DUP8 MUL DUP3 SUB MUL SWAP6 DUP7 MUL SWAP1 SUB SWAP1 SWAP5 MUL SWAP4 DIV PUSH1 0x1 ADD SWAP4 SWAP1 SWAP4 MUL SWAP4 SWAP1 SWAP4 ADD MUL SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH20 0x7472614C6962726172793A204944454E54494341 0x4C 0x5F COINBASE DIFFICULTY DIFFICULTY MSTORE GASLIMIT MSTORE8 MSTORE8 GASLIMIT MSTORE8 SLOAD PUSH19 0x616E7366657248656C7065723A3A7472616E73 PUSH7 0x657246726F6D3A KECCAK256 PUSH21 0x72616E7366657246726F6D206661696C6564547261 PUSH15 0x7366657248656C7065723A3A736166 PUSH6 0x417070726F76 PUSH6 0x3A2061707072 PUSH16 0x7665206661696C65644578616D706C65 MSTORE8 PUSH24 0x6170546F50726963653A205A45524F5F414D4F554E545F49 0x4E LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA LOG4 0xB0 PUSH20 0xCEAAF8DA67090774B9F7769EDDA296906E873A6E 0xF SWAP16 0xD4 0xBD STOP PUSH18 0xC3B964736F6C634300060600330000000000 ","sourceMap":"361:2398:10:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;361:2398:10;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;907:1850:10;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;907:1850:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;472:32;;;:::i;:::-;;;;-1:-1:-1;;;;;472:32:10;;;;;;;;;;;;;;428:38;;;:::i;907:1850::-;1262:20;;;;;:44;;-1:-1:-1;1286:20:10;;;1262:44;1254:87;;;;;-1:-1:-1;;;1254:87:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1459:19;;;;:42;;-1:-1:-1;1482:19:10;;;1459:42;1451:85;;;;;-1:-1:-1;;;1451:85:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;1547:9;1566:16;1607;1625;1645:49;1670:7;1679:6;1687;1645:24;:49::i;:::-;1606:88;;;;1727:154;1799:15;1816;1849:8;1859;1727:54;:154::i;:::-;1708:173;;-1:-1:-1;1708:173:10;-1:-1:-1;;;1910:12:10;1902:59;;;;-1:-1:-1;;;1902:59:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:16;2044:4;:38;;2068:14;2044:38;;;2051:14;2044:38;2025:57;;2107:8;2096;:19;2092:69;;;2142:8;2131:19;;2092:69;2171:15;2189:4;:22;;2205:6;2189:22;;;2196:6;2189:22;2171:40;;2221:16;2240:4;:22;;2256:6;2240:22;;;2247:6;2240:22;2221:41;;2272:77;2304:7;2313:10;2333:4;2340:8;2272:31;:77::i;:::-;2359:62;2386:7;2403:6;2412:8;2359:26;:62::i;:::-;2456:16;;;2470:1;2456:16;;;2432:21;2456:16;;;;;2432:21;2456:16;;;;;109:14:-1;2456:16:10;88:42:-1;144:17;;-1:-1;2456:16:10;2432:40;;2492:7;2482:4;2487:1;2482:7;;;;;;;;;;;;;:17;-1:-1:-1;;;;;2482:17:10;;;-1:-1:-1;;;;;2482:17:10;;;;;2519:8;2509:4;2514:1;2509:7;;;;;;;;;;;;;:18;-1:-1:-1;;;;;2509:18:10;;;-1:-1:-1;;;;;2509:18:10;;;;;2538:6;-1:-1:-1;;;;;2538:31:10;;2583:8;2605:1;2698:4;2716:2;2732:8;2538:212;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2538:212:10;-1:-1:-1;;;;;2538:212:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2538:212:10;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2538:212:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2538:212:10;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2538:212:10;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;15:2;7:11;;4:2;;;31:1;28;21:12;4:2;2538:212:10;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;2538:212:10;;421:4:-1;412:14;;;;2538:212:10;;;;;412:14:-1;2538:212:10;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2538:212:10;;;;;;;;;;;;907:1850;;;;;;;;;;;;;;:::o;472:32::-;;;:::o;428:38::-;;;:::o;1426:473:18:-;1549:16;1567;1596:14;1616:26;1627:6;1635;1616:10;:26::i;:::-;1595:47;;;1653:16;1671;1717:32;1725:7;1734:6;1742;1717:7;:32::i;:::-;-1:-1:-1;;;;;1693:78:18;;:80;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1693:80:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1693:80:18;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1693:80:18;;;;;;;1652:121;;;;;-1:-1:-1;1652:121:18;;-1:-1:-1;;;;;;1806:16:18;;;;;;;:86;;1873:8;1883;1806:86;;;1838:8;1848;1806:86;1783:109;;;;-1:-1:-1;1426:473:18;-1:-1:-1;;;;;;;1426:473:18:o;530:903:19:-;715:9;726:16;816:15;761:52;777:8;787:15;804:8;761:15;:52::i;:::-;:70;;-1:-1:-1;842:17:19;862:22;:8;875;862:22;:12;:22;:::i;:::-;842:42;-1:-1:-1;895:16:19;914:232;943:193;976:19;842:42;990:4;976:19;:13;:19;:::i;:::-;1013:4;:40;;1038:15;1013:40;;;1020:15;1013:40;1071:51;1118:3;1072:4;:40;;1097:15;1072:40;;;1079:15;1072:40;1071:46;:51;:46;:51;:::i;:::-;943:15;:193::i;:::-;914:15;:232::i;:::-;895:251;;1156:17;1227:3;1177:4;:46;;1205:18;:8;1218:4;1205:18;:12;:18;:::i;:::-;1177:46;;;1184:18;:8;1197:4;1184:18;:12;:18;:::i;:::-;1176:54;;;;;;1156:74;;1256:9;1245:8;:20;1241:43;;;-1:-1:-1;1275:5:19;;-1:-1:-1;1275:5:19;;-1:-1:-1;1267:17:19;;-1:-1:-1;;1267:17:19;1241:43;1403:23;:8;1416:9;1403:23;:12;:23;:::i;:::-;1392:34;;530:903;;;;;;;;;;;:::o;1096:486:26:-;1360:51;;;-1:-1:-1;;;;;1360:51:26;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1360:51:26;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1349:63:26;;;;1314:12;;1328:17;;1349:10;;;;1360:51;1349:63;;;25:18:-1;1349:63:26;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1349:63:26;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1313:99:26;;;;1443:7;:57;;;;-1:-1:-1;1455:11:26;;:16;;:44;;;1486:4;1475:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1475:24:26;1455:44;1422:153;;;;-1:-1:-1;;;1422:153:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1096:486;;;;;;:::o;212:434::-;436:45;;;-1:-1:-1;;;;;436:45:26;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;436:45:26;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;425:57:26;;;;390:12;;404:17;;425:10;;;;436:45;425:57;;;25:18:-1;425:57:26;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;425:57:26;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;389:93:26;;;;513:7;:57;;;;-1:-1:-1;525:11:26;;:16;;:44;;;556:4;545:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;545:24:26;525:44;492:147;;;;-1:-1:-1;;;492:147:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;212:434;;;;;:::o;260:389:18:-;359:14;375;423:6;-1:-1:-1;;;;;413:16:18;:6;-1:-1:-1;;;;;413:16:18;;;405:62;;;;-1:-1:-1;;;405:62:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;505:6;-1:-1:-1;;;;;496:15:18;:6;-1:-1:-1;;;;;496:15:18;;:77;;558:6;566;496:77;;;527:6;535;496:77;477:96;;-1:-1:-1;477:96:18;-1:-1:-1;;;;;;591:20:18;;583:59;;;;;-1:-1:-1;;;583:59:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;260:389;;;;;:::o;738:633::-;857:12;882:14;898;916:26;927:6;935;916:10;:26::i;:::-;1154:32;;;-1:-1:-1;;1154:32:18;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;1154:32:18;;;;;1144:43;;;;;;-1:-1:-1;;;;;;1036:286:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1036:286:18;;;;;;;1005:335;;;;;;;;;738:633;-1:-1:-1;;;;;738:633:18:o;897:373:24:-;999:7;1019:9;1030;1043:13;1051:1;1054;1043:7;:13::i;:::-;1018:38;;;;1067:10;1093:1;1080:15;;;;;1090:1;1087;1080:15;1067:28;;1114:1;1109:2;:6;1105:18;;;1122:1;1117:6;;;;1105:18;1133:7;;;;;1155:6;1151:24;;1174:1;1170;:5;;;;;;1163:12;;;;;;;1151:24;1198:1;1194;:5;1186:44;;;;;-1:-1:-1;;;1186:44:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;1247:16;1255:1;1258;1261;1247:7;:16::i;:::-;1240:23;;;;;897:373;;;;;;:::o;419:140:25:-;471:6;497;;;:30;;-1:-1:-1;;512:5:25;;;526:1;521;512:5;521:1;507:15;;;;;:20;497:30;489:63;;;;;-1:-1:-1;;;489:63:25;;;;;;;;;;;;-1:-1:-1;;;489:63:25;;;;;;;;;;;;;;;419:140;;;;:::o;382:1197:21:-;430:7;453:6;449:20;;-1:-1:-1;468:1:21;461:8;;449:20;644:1;667;-1:-1:-1;;;682:41:21;;678:104;;746:3;739:10;;;;;769:2;763:8;678:104;801:19;795:2;:25;791:87;;843:2;836:9;;;;;865:2;859:8;791:87;897:11;891:2;:17;887:79;;931:2;924:9;;;;;953:2;947:8;887:79;985:7;979:2;:13;975:74;;1015:2;1008:9;;;;;1037:1;1031:7;975:74;1068:5;1062:2;:11;1058:71;;1096:1;1089:8;;;;;1117:1;1111:7;1058:71;1148:4;1142:2;:10;1138:70;;1175:1;1168:8;;;;;1196:1;1190:7;1138:70;1227:3;1221:2;:9;1217:47;;1252:1;1246:7;1217:47;1292:1;1286;1282;:5;;;;;;1278:1;:9;1277:16;;1273:20;;1322:1;1316;1312;:5;;;;;;1308:1;:9;1307:16;;1303:20;;1352:1;1346;1342;:5;;;;;;1338:1;:9;1337:16;;1333:20;;1382:1;1376;1372;:5;;;;;;1368:1;:9;1367:16;;1363:20;;1412:1;1406;1402;:5;;;;;;1398:1;:9;1397:16;;1393:20;;1442:1;1436;1432;:5;;;;;;1428:1;:9;1427:16;;1423:20;;1472:1;1466;1462;:5;;;;;;1458:1;:9;1457:16;;1453:20;;1520:10;1537:1;1533;:5;;;;;;1520:18;;1560:2;1556:1;:6;:15;;1569:2;1556:15;;;1565:1;1556:15;1548:24;;;;;382:1197;;;;:::o;286:127:25:-;369:5;;;364:16;;;;356:50;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;;;216:206:24;278:9;;;-1:-1:-1;;333:1:24;330;323:25;310:38;;366:1;362;:5;358:9;;386:1;381:2;:6;377:10;;406:1;401:2;:6;397:18;;;414:1;409:6;;;;397:18;216:206;;;;;;:::o;428:463::-;530:7;568:2;;;564:6;;;569:1;564:6;580:9;;;;;;;604:4;599:9;;;;;;;;;638:4;630;629:5;;628:14;;;;;685:1;:9;;;713:5;;;709:9;;704:14;737:5;;;733:9;;728:14;761:5;;;757:9;;752:14;785:5;;;781:9;;776:14;809:5;;;805:9;;800:14;833:5;;;829:9;;824:14;857:5;;;853:9;;848:14;;;628;;645:1;628:18;623:24;;;;618:29;;;;879:5;;428:463;-1:-1:-1;;428:463:24:o"},"methodIdentifiers":{"factory()":"c45a0155","router()":"f887ea40","swapToPrice(address,address,uint256,uint256,uint256,uint256,address,uint256)":"bef90fd3"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory_\",\"type\":\"address\"},{\"internalType\":\"contract IAstraRouter01\",\"name\":\"router_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"router\",\"outputs\":[{\"internalType\":\"contract IAstraRouter01\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"truePriceTokenB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSpendTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxSpendTokenB\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapToPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/examples/ExampleSwapToPrice.sol\":\"ExampleSwapToPrice\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraFactory.sol\":{\"keccak256\":\"0x1d8cfacb873119cce028428fbfc6741a17f9dff23726b6f9262be38b04d2147d\",\"urls\":[\"bzz-raw://8161eaf5b9b22d8d7bb774f33dd0465b3796decc507f6509d02800052b6da351\",\"dweb:/ipfs/QmWhWSfZqWbx9iBRsV2PB2oEGcV7tgp8TthHH6ZYbN2JCP\"]},\"contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"contracts/periphery/examples/ExampleSwapToPrice.sol\":{\"keccak256\":\"0xad3411c5e1d54b3614c75db57f44922f70323a67c0c36560232746c15e2ea496\",\"urls\":[\"bzz-raw://2c812eeb06abdbf9de44820eb27becf0ed1638b0d84c446e9b3f3b9d6e2d396e\",\"dweb:/ipfs/QmSsVH4QoQiYFrdmSBubVjsoVbXPKeCEMLgD7Wt8tUDz9N\"]},\"contracts/periphery/interfaces/IAstraRouter01.sol\":{\"keccak256\":\"0x41f94bb4b263f1a0a17e4ca169a7057ecc6d9ff5f575c9047a57e062f7680708\",\"urls\":[\"bzz-raw://d5e155912a41505ccd8702dabc77193fb0bb0601cc0b3efc447aefa98b3a9699\",\"dweb:/ipfs/Qmaev2znL8F5UWbiZJMe124SATkzmrQz4kB5uEeBKyU5iZ\"]},\"contracts/periphery/interfaces/IERC20.sol\":{\"keccak256\":\"0x61db17aebc5d812c7002d15c1da954065e56abe49d64b14c034abe5604d70eb3\",\"urls\":[\"bzz-raw://b006685e753f9120469f10b09c159f222d4cb8b507a6c1f0c14ed50c883ebe66\",\"dweb:/ipfs/QmSyY7iTugbczPwfGK67etiyPULenYGzzRYbt8aabwwkUb\"]},\"contracts/periphery/libraries/AstraLibrary.sol\":{\"keccak256\":\"0xae44fd35f2a3c3498de7cbc39ec1f34ac497d62bfa993d07795ae3bc124b2b31\",\"urls\":[\"bzz-raw://637a1e7bb00c545f7ba83851539379085fe791497a5b36cff1dee4a34e0056d9\",\"dweb:/ipfs/QmaFeUq9bYst2tN6zfTNqGW48kACsvXaofZvKtQP4DTqWh\"]},\"contracts/periphery/libraries/AstraLiquidityMathLibrary.sol\":{\"keccak256\":\"0x2fa04eb817510f19683f49215088f372da942f2ee8a5ba617d48bbbfb51652e2\",\"urls\":[\"bzz-raw://98d56b425c47172b4a354be8781143e5d6be099ed06e0ea7a5a1caa9e86edb96\",\"dweb:/ipfs/QmNcaXaL7mpnBCdTTGqPu4M7XZ4HxvFmBEWnQR8Na7Cfsi\"]},\"contracts/periphery/libraries/Babylonian.sol\":{\"keccak256\":\"0xeb1c2a281a00f4660775f75ccfa1e51fbe1d75f86aeb9d0d297151ecdb900177\",\"urls\":[\"bzz-raw://68515f0265381bddfb1d1356ea10ce4e5784276fc09f197fcdcedfa5c75cc069\",\"dweb:/ipfs/QmXWVVPnuJwRUAu3Qpu1s7Fyc5WPQxmZPczVEe5cJ5wVHZ\"]},\"contracts/periphery/libraries/FullMath.sol\":{\"keccak256\":\"0xc4ffcf28169f73fc9fdd1f82345d6d4fcccf3fd5aea83c133437c25e4e0950a9\",\"urls\":[\"bzz-raw://c9257a47501005f0a648bc4801ef4abc33843681aaf03a6d0c43d46b69e37407\",\"dweb:/ipfs/QmciHvDrqhxs5fjsrm9aNq29FZXpunMn17n2wWj83Zsh3B\"]},\"contracts/periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1\",\"urls\":[\"bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c\",\"dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg\"]},\"contracts/periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0x91888c39fcda3d21089c867d943b013f02165203b62e6925b898e5652df313e0\",\"urls\":[\"bzz-raw://ef6af53c706fd1e4a3f5b974bf46f5b811cad331126802f466a56e53b32757a7\",\"dweb:/ipfs/QmdWuxHaLq1wyFgTo5aBBAEcqE2XqGwi249rr8NsTY9qsu\"]}},\"version\":1}"}},"contracts/periphery/interfaces/IAstraMigrator.sol":{"IAstraMigrator":{"abi":[{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"migrate","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"migrate(address,uint256,uint256,address,uint256)":"b7df1d25"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/interfaces/IAstraMigrator.sol\":\"IAstraMigrator\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/interfaces/IAstraMigrator.sol\":{\"keccak256\":\"0x28f199cd7493306e924ef8004b90eaaf1b6587e4240a2c853058d6788ec670f5\",\"urls\":[\"bzz-raw://92178cd1da83473ba10aab447751f1edb3d9736602c6934c290424ca88a66824\",\"dweb:/ipfs/QmchKnSPgRspNCis69t555UYAsrhaaYbScanEs3HFs9P7t\"]}},\"version\":1}"}},"contracts/periphery/interfaces/IAstraRouter01.sol":{"IAstraRouter01":{"abi":[{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityAMB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAMB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityAMB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAMB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityAMBWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAMB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapAMBForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactAMBForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForAMB","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactAMB","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"SAMB()":"90793ea8","addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)":"e8e33700","addLiquidityAMB(address,uint256,uint256,uint256,address,uint256)":"84b0b3a2","factory()":"c45a0155","getAmountIn(uint256,uint256,uint256)":"85f8c259","getAmountOut(uint256,uint256,uint256)":"054d50d4","getAmountsIn(uint256,address[])":"1f00ca74","getAmountsOut(uint256,address[])":"d06ca61f","quote(uint256,uint256,uint256)":"ad615dec","removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)":"baa2abde","removeLiquidityAMB(address,uint256,uint256,uint256,address,uint256)":"e77bdfc5","removeLiquidityAMBWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"6eeccb89","removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"2195995c","swapAMBForExactTokens(uint256,address[],address,uint256)":"ef0dc4be","swapExactAMBForTokens(uint256,address[],address,uint256)":"ac8ee3b6","swapExactTokensForAMB(uint256,uint256,address[],address,uint256)":"e5dee373","swapExactTokensForTokens(uint256,uint256,address[],address,uint256)":"38ed1739","swapTokensForExactAMB(uint256,uint256,address[],address,uint256)":"40d2463f","swapTokensForExactTokens(uint256,uint256,address[],address,uint256)":"8803dbee"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityAMB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAMB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityAMBWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapAMBForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAMBForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAMB\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactAMB\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/interfaces/IAstraRouter01.sol\":\"IAstraRouter01\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/interfaces/IAstraRouter01.sol\":{\"keccak256\":\"0x41f94bb4b263f1a0a17e4ca169a7057ecc6d9ff5f575c9047a57e062f7680708\",\"urls\":[\"bzz-raw://d5e155912a41505ccd8702dabc77193fb0bb0601cc0b3efc447aefa98b3a9699\",\"dweb:/ipfs/Qmaev2znL8F5UWbiZJMe124SATkzmrQz4kB5uEeBKyU5iZ\"]}},\"version\":1}"}},"contracts/periphery/interfaces/IAstraRouter02.sol":{"IAstraRouter02":{"abi":[{"inputs":[],"name":"SAMB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityAMB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAMB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityAMB","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAMB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityAMBSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountAMB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityAMBWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountAMB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountAMBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityAMBWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountAMB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapAMBForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactAMBForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactAMBForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForAMB","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForAMBSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactAMB","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"SAMB()":"90793ea8","addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256)":"e8e33700","addLiquidityAMB(address,uint256,uint256,uint256,address,uint256)":"84b0b3a2","factory()":"c45a0155","getAmountIn(uint256,uint256,uint256)":"85f8c259","getAmountOut(uint256,uint256,uint256)":"054d50d4","getAmountsIn(uint256,address[])":"1f00ca74","getAmountsOut(uint256,address[])":"d06ca61f","quote(uint256,uint256,uint256)":"ad615dec","removeLiquidity(address,address,uint256,uint256,uint256,address,uint256)":"baa2abde","removeLiquidityAMB(address,uint256,uint256,uint256,address,uint256)":"e77bdfc5","removeLiquidityAMBSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256)":"1e0bcdae","removeLiquidityAMBWithPermit(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"6eeccb89","removeLiquidityAMBWithPermitSupportingFeeOnTransferTokens(address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"cf795867","removeLiquidityWithPermit(address,address,uint256,uint256,uint256,address,uint256,bool,uint8,bytes32,bytes32)":"2195995c","swapAMBForExactTokens(uint256,address[],address,uint256)":"ef0dc4be","swapExactAMBForTokens(uint256,address[],address,uint256)":"ac8ee3b6","swapExactAMBForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256)":"c1c222df","swapExactTokensForAMB(uint256,uint256,address[],address,uint256)":"e5dee373","swapExactTokensForAMBSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)":"8402322d","swapExactTokensForTokens(uint256,uint256,address[],address,uint256)":"38ed1739","swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256)":"5c11d795","swapTokensForExactAMB(uint256,uint256,address[],address,uint256)":"40d2463f","swapTokensForExactTokens(uint256,uint256,address[],address,uint256)":"8803dbee"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"SAMB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityAMB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"getAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAMB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAMBSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityAMBWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityAMBWithPermitSupportingFeeOnTransferTokens\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountAMB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapAMBForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAMBForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAMBForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAMB\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAMBSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensSupportingFeeOnTransferTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactAMB\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/interfaces/IAstraRouter02.sol\":\"IAstraRouter02\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/interfaces/IAstraRouter01.sol\":{\"keccak256\":\"0x41f94bb4b263f1a0a17e4ca169a7057ecc6d9ff5f575c9047a57e062f7680708\",\"urls\":[\"bzz-raw://d5e155912a41505ccd8702dabc77193fb0bb0601cc0b3efc447aefa98b3a9699\",\"dweb:/ipfs/Qmaev2znL8F5UWbiZJMe124SATkzmrQz4kB5uEeBKyU5iZ\"]},\"contracts/periphery/interfaces/IAstraRouter02.sol\":{\"keccak256\":\"0xe268d7aa46615d29d43e4d2bec9319eb7473627533525e529588d233ec3d2cc9\",\"urls\":[\"bzz-raw://836685e7d3c4b1831001487965bec6b8736fe484e53ffb53804cba4dedd7ba54\",\"dweb:/ipfs/QmYkCCqU7MXVGduf5sYkWRY3ykLKcFzjtxjMx2n4jvmCEb\"]}},\"version\":1}"}},"contracts/periphery/interfaces/IERC20.sol":{"IERC20":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/interfaces/IERC20.sol\":{\"keccak256\":\"0x61db17aebc5d812c7002d15c1da954065e56abe49d64b14c034abe5604d70eb3\",\"urls\":[\"bzz-raw://b006685e753f9120469f10b09c159f222d4cb8b507a6c1f0c14ed50c883ebe66\",\"dweb:/ipfs/QmSyY7iTugbczPwfGK67etiyPULenYGzzRYbt8aabwwkUb\"]}},\"version\":1}"}},"contracts/periphery/interfaces/ISAMB.sol":{"ISAMB":{"abi":[{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"deposit()":"d0e30db0","transfer(address,uint256)":"a9059cbb","withdraw(uint256)":"2e1a7d4d"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/interfaces/ISAMB.sol\":\"ISAMB\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/interfaces/ISAMB.sol\":{\"keccak256\":\"0xaa6bcbe5a4eda8bed6cb5c2779b1607bfb5e2aa026729ab120e59ec3c93d65c1\",\"urls\":[\"bzz-raw://6741ee95b1b38a1fd9b541eaadebbf81ffa7787049d00ebe410d2126964e3cb2\",\"dweb:/ipfs/QmSchE668jWboooBDstjTNMKuk8f6wgVQWibhXBTTsGDsF\"]}},\"version\":1}"}},"contracts/periphery/interfaces/V1/IAstraV1Exchange.sol":{"IAstraV1Exchange":{"abi":[{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"AMBToTokenSwapInput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenToAMBSwapInput","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"AMBToTokenSwapInput(uint256,uint256)":"b11c839c","balanceOf(address)":"70a08231","removeLiquidity(uint256,uint256,uint256,uint256)":"f88bf15a","tokenToAMBSwapInput(uint256,uint256,uint256)":"61862169","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"AMBToTokenSwapInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"tokenToAMBSwapInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/interfaces/V1/IAstraV1Exchange.sol\":\"IAstraV1Exchange\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/interfaces/V1/IAstraV1Exchange.sol\":{\"keccak256\":\"0x98b4fc0788e0c690dc9f32086c4f3dec01d0bacead9463f302f61794f9d01baf\",\"urls\":[\"bzz-raw://188f6931c695a854ebefae8aca7bba7a0f401303a91e309991ce00a12e75a509\",\"dweb:/ipfs/QmUVQheF7zE8qGdUZfdmiceGkhpCGbS224TGLFggLGN7Aw\"]}},\"version\":1}"}},"contracts/periphery/interfaces/V1/IAstraV1Factory.sol":{"IAstraV1Factory":{"abi":[{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getExchange","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"getExchange(address)":"06f2bf62"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getExchange\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/interfaces/V1/IAstraV1Factory.sol\":\"IAstraV1Factory\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/interfaces/V1/IAstraV1Factory.sol\":{\"keccak256\":\"0x4116b464fdb13158f841346fad13b237dc6498d9db48ffab3f5ebe707e256ee7\",\"urls\":[\"bzz-raw://0203c6ca28866e670b226ac448801e8caee73b554a3106c81eb0a270317b9723\",\"dweb:/ipfs/QmeNTHK7vtHJB2PaqiCZmpvNMB9ZttE2HNBVFd6FrMK7DE\"]}},\"version\":1}"}},"contracts/periphery/libraries/AstraLibrary.sol":{"AstraLibrary":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf9d3ae529de68205214b5aa0a1a85bdae95ececad9696013d275de7764dcffd64736f6c63430006060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF SWAP14 GASPRICE 0xE5 0x29 0xDE PUSH9 0x205214B5AA0A1A85BD 0xAE SWAP6 0xEC 0xEC 0xAD SWAP7 SWAP7 ADD RETURNDATASIZE 0x27 0x5D 0xE7 PUSH23 0x4DCFFD64736F6C63430006060033000000000000000000 ","sourceMap":"100:5056:18:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bf9d3ae529de68205214b5aa0a1a85bdae95ececad9696013d275de7764dcffd64736f6c63430006060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBF SWAP14 GASPRICE 0xE5 0x29 0xDE PUSH9 0x205214B5AA0A1A85BD 0xAE SWAP6 0xEC 0xEC 0xAD SWAP7 SWAP7 ADD RETURNDATASIZE 0x27 0x5D 0xE7 PUSH23 0x4DCFFD64736F6C63430006060033000000000000000000 ","sourceMap":"100:5056:18:-:0;;;;;;12:1:-1;9;2:12"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/libraries/AstraLibrary.sol\":\"AstraLibrary\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"contracts/periphery/libraries/AstraLibrary.sol\":{\"keccak256\":\"0xae44fd35f2a3c3498de7cbc39ec1f34ac497d62bfa993d07795ae3bc124b2b31\",\"urls\":[\"bzz-raw://637a1e7bb00c545f7ba83851539379085fe791497a5b36cff1dee4a34e0056d9\",\"dweb:/ipfs/QmaFeUq9bYst2tN6zfTNqGW48kACsvXaofZvKtQP4DTqWh\"]},\"contracts/periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1\",\"urls\":[\"bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c\",\"dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg\"]}},\"version\":1}"}},"contracts/periphery/libraries/AstraLiquidityMathLibrary.sol":{"AstraLiquidityMathLibrary":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032f8077c4722d0bd6dcb99199f7a92b9dc628fb8db5fb6c936c66de00f8dd56c64736f6c63430006060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN 0xF8 SMOD PUSH29 0x4722D0BD6DCB99199F7A92B9DC628FB8DB5FB6C936C66DE00F8DD56C64 PUSH20 0x6F6C634300060600330000000000000000000000 ","sourceMap":"382:5439:19:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122032f8077c4722d0bd6dcb99199f7a92b9dc628fb8db5fb6c936c66de00f8dd56c64736f6c63430006060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN 0xF8 SMOD PUSH29 0x4722D0BD6DCB99199F7A92B9DC628FB8DB5FB6C936C66DE00F8DD56C64 PUSH20 0x6F6C634300060600330000000000000000000000 ","sourceMap":"382:5439:19:-:0;;;;;;12:1:-1;9;2:12"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/libraries/AstraLiquidityMathLibrary.sol\":\"AstraLiquidityMathLibrary\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraFactory.sol\":{\"keccak256\":\"0x1d8cfacb873119cce028428fbfc6741a17f9dff23726b6f9262be38b04d2147d\",\"urls\":[\"bzz-raw://8161eaf5b9b22d8d7bb774f33dd0465b3796decc507f6509d02800052b6da351\",\"dweb:/ipfs/QmWhWSfZqWbx9iBRsV2PB2oEGcV7tgp8TthHH6ZYbN2JCP\"]},\"contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"contracts/periphery/libraries/AstraLibrary.sol\":{\"keccak256\":\"0xae44fd35f2a3c3498de7cbc39ec1f34ac497d62bfa993d07795ae3bc124b2b31\",\"urls\":[\"bzz-raw://637a1e7bb00c545f7ba83851539379085fe791497a5b36cff1dee4a34e0056d9\",\"dweb:/ipfs/QmaFeUq9bYst2tN6zfTNqGW48kACsvXaofZvKtQP4DTqWh\"]},\"contracts/periphery/libraries/AstraLiquidityMathLibrary.sol\":{\"keccak256\":\"0x2fa04eb817510f19683f49215088f372da942f2ee8a5ba617d48bbbfb51652e2\",\"urls\":[\"bzz-raw://98d56b425c47172b4a354be8781143e5d6be099ed06e0ea7a5a1caa9e86edb96\",\"dweb:/ipfs/QmNcaXaL7mpnBCdTTGqPu4M7XZ4HxvFmBEWnQR8Na7Cfsi\"]},\"contracts/periphery/libraries/Babylonian.sol\":{\"keccak256\":\"0xeb1c2a281a00f4660775f75ccfa1e51fbe1d75f86aeb9d0d297151ecdb900177\",\"urls\":[\"bzz-raw://68515f0265381bddfb1d1356ea10ce4e5784276fc09f197fcdcedfa5c75cc069\",\"dweb:/ipfs/QmXWVVPnuJwRUAu3Qpu1s7Fyc5WPQxmZPczVEe5cJ5wVHZ\"]},\"contracts/periphery/libraries/FullMath.sol\":{\"keccak256\":\"0xc4ffcf28169f73fc9fdd1f82345d6d4fcccf3fd5aea83c133437c25e4e0950a9\",\"urls\":[\"bzz-raw://c9257a47501005f0a648bc4801ef4abc33843681aaf03a6d0c43d46b69e37407\",\"dweb:/ipfs/QmciHvDrqhxs5fjsrm9aNq29FZXpunMn17n2wWj83Zsh3B\"]},\"contracts/periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1\",\"urls\":[\"bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c\",\"dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg\"]}},\"version\":1}"}},"contracts/periphery/libraries/AstraOracleLibrary.sol":{"AstraOracleLibrary":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a8fef27b8572b1428c37a7a9b97dd785c097915c6afd9ab0322791401f9b449e64736f6c63430006060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 INVALID CALLCODE PUSH28 0x8572B1428C37A7A9B97DD785C097915C6AFD9AB0322791401F9B449E PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"193:1428:20:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a8fef27b8572b1428c37a7a9b97dd785c097915c6afd9ab0322791401f9b449e64736f6c63430006060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA8 INVALID CALLCODE PUSH28 0x8572B1428C37A7A9B97DD785C097915C6AFD9AB0322791401F9B449E PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"193:1428:20:-:0;;;;;;12:1:-1;9;2:12"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/libraries/AstraOracleLibrary.sol\":\"AstraOracleLibrary\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/core/interfaces/IAstraPair.sol\":{\"keccak256\":\"0xd2259aac0746706697d6e8097a48b592308fb1e1e78077cc3e0540234dee6648\",\"urls\":[\"bzz-raw://525ef590cf7e5c54030527703a7409b74c70497715aebf8dae0b877ee136dac7\",\"dweb:/ipfs/QmVgR4Pk3i8X8oS8xxNnVsFkDXXGP2wu4YvhG23e3z5K9q\"]},\"contracts/periphery/libraries/AstraOracleLibrary.sol\":{\"keccak256\":\"0x424adb3090303ecc84ae9db02fddacce5ca914d37606dcc599122be73be9e4e2\",\"urls\":[\"bzz-raw://526c8a6e6057b44d2bfa85ef3b8e10bcb78f42acc5250f7d45712e55c683e492\",\"dweb:/ipfs/QmVXKXwJvkcuE6d26GRowfDSq5k56DP59JKKxDnU2GZfru\"]},\"contracts/periphery/libraries/Babylonian.sol\":{\"keccak256\":\"0xeb1c2a281a00f4660775f75ccfa1e51fbe1d75f86aeb9d0d297151ecdb900177\",\"urls\":[\"bzz-raw://68515f0265381bddfb1d1356ea10ce4e5784276fc09f197fcdcedfa5c75cc069\",\"dweb:/ipfs/QmXWVVPnuJwRUAu3Qpu1s7Fyc5WPQxmZPczVEe5cJ5wVHZ\"]},\"contracts/periphery/libraries/BitMath.sol\":{\"keccak256\":\"0x19f84d5268286794b44939ec0d85b3c6f59e133f826cdbd9e40112fc94919bb7\",\"urls\":[\"bzz-raw://d21c67ed58cf667d052e141df2fba76c46c159edcc45eb897c908c20c69d2727\",\"dweb:/ipfs/QmUyKz1992wgR8nYAzBuQzjBAKMxLAN3hTgzpYJxusbmVH\"]},\"contracts/periphery/libraries/FixedPoint.sol\":{\"keccak256\":\"0x127ecf7db1a5b5a38610f3f11337715fc00ba57ee412fa6978dcf2cf58eccdf7\",\"urls\":[\"bzz-raw://f7027d233bc1f41809e484d6866ddf2408897994cbe8c9ab99f397767bbd13db\",\"dweb:/ipfs/QmPr72ABBnRTSoZZmkygzgskZzogZb1M74U9Tf2DHH62xn\"]},\"contracts/periphery/libraries/FullMath.sol\":{\"keccak256\":\"0xc4ffcf28169f73fc9fdd1f82345d6d4fcccf3fd5aea83c133437c25e4e0950a9\",\"urls\":[\"bzz-raw://c9257a47501005f0a648bc4801ef4abc33843681aaf03a6d0c43d46b69e37407\",\"dweb:/ipfs/QmciHvDrqhxs5fjsrm9aNq29FZXpunMn17n2wWj83Zsh3B\"]}},\"version\":1}"}},"contracts/periphery/libraries/Babylonian.sol":{"Babylonian":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207fb32252c42e700ef8d83780a07fa85086f6ec569d1f7b114ee055eb7e8beeca64736f6c63430006060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0xB32252C42E700EF8D83780A07FA85086F6EC569D1F7B114EE055EB7E8BEECA64 PUSH20 0x6F6C634300060600330000000000000000000000 ","sourceMap":"210:1371:21:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207fb32252c42e700ef8d83780a07fa85086f6ec569d1f7b114ee055eb7e8beeca64736f6c63430006060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0xB32252C42E700EF8D83780A07FA85086F6EC569D1F7B114EE055EB7E8BEECA64 PUSH20 0x6F6C634300060600330000000000000000000000 ","sourceMap":"210:1371:21:-:0;;;;;;12:1:-1;9;2:12"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/libraries/Babylonian.sol\":\"Babylonian\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/libraries/Babylonian.sol\":{\"keccak256\":\"0xeb1c2a281a00f4660775f75ccfa1e51fbe1d75f86aeb9d0d297151ecdb900177\",\"urls\":[\"bzz-raw://68515f0265381bddfb1d1356ea10ce4e5784276fc09f197fcdcedfa5c75cc069\",\"dweb:/ipfs/QmXWVVPnuJwRUAu3Qpu1s7Fyc5WPQxmZPczVEe5cJ5wVHZ\"]}},\"version\":1}"}},"contracts/periphery/libraries/BitMath.sol":{"BitMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b4e3ab4370c4051720b41d4cdedbd414065dec83e3dfee18c5ceb3796a9815dc64736f6c63430006060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0xE3 0xAB NUMBER PUSH17 0xC4051720B41D4CDEDBD414065DEC83E3DF 0xEE XOR 0xC5 0xCE 0xB3 PUSH26 0x6A9815DC64736F6C634300060600330000000000000000000000 ","sourceMap":"71:2043:22:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b4e3ab4370c4051720b41d4cdedbd414065dec83e3dfee18c5ceb3796a9815dc64736f6c63430006060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB4 0xE3 0xAB NUMBER PUSH17 0xC4051720B41D4CDEDBD414065DEC83E3DF 0xEE XOR 0xC5 0xCE 0xB3 PUSH26 0x6A9815DC64736F6C634300060600330000000000000000000000 ","sourceMap":"71:2043:22:-:0;;;;;;12:1:-1;9;2:12"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/libraries/BitMath.sol\":\"BitMath\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/libraries/BitMath.sol\":{\"keccak256\":\"0x19f84d5268286794b44939ec0d85b3c6f59e133f826cdbd9e40112fc94919bb7\",\"urls\":[\"bzz-raw://d21c67ed58cf667d052e141df2fba76c46c159edcc45eb897c908c20c69d2727\",\"dweb:/ipfs/QmUyKz1992wgR8nYAzBuQzjBAKMxLAN3hTgzpYJxusbmVH\"]}},\"version\":1}"}},"contracts/periphery/libraries/FixedPoint.sol":{"FixedPoint":{"abi":[{"inputs":[],"name":"Q112","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RESOLUTION","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"60b9610025600b82828239805160001a60731461001857fe5b30600052607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80633bf7a83e146042578063552f888a14605a575b600080fd5b60486076565b60408051918252519081900360200190f35b6060607e565b6040805160ff9092168252519081900360200190f35b600160701b81565b60708156fea26469706673582212201caf3390578a88c5d5177b2e0931735d3563021025264b2dad607532c8ec4edb64736f6c63430006060033","opcodes":"PUSH1 0xB9 PUSH2 0x25 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x18 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3BF7A83E EQ PUSH1 0x42 JUMPI DUP1 PUSH4 0x552F888A EQ PUSH1 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x48 PUSH1 0x76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x1 PUSH1 0x70 SHL DUP2 JUMP JUMPDEST PUSH1 0x70 DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR 0xAF CALLER SWAP1 JUMPI DUP11 DUP9 0xC5 0xD5 OR PUSH28 0x2E0931735D3563021025264B2DAD607532C8EC4EDB64736F6C634300 MOD MOD STOP CALLER ","sourceMap":"275:5884:23:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"7300000000000000000000000000000000000000003014608060405260043610603d5760003560e01c80633bf7a83e146042578063552f888a14605a575b600080fd5b60486076565b60408051918252519081900360200190f35b6060607e565b6040805160ff9092168252519081900360200190f35b600160701b81565b60708156fea26469706673582212201caf3390578a88c5d5177b2e0931735d3563021025264b2dad607532c8ec4edb64736f6c63430006060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x3D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3BF7A83E EQ PUSH1 0x42 JUMPI DUP1 PUSH4 0x552F888A EQ PUSH1 0x5A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x48 PUSH1 0x76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x7E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x1 PUSH1 0x70 SHL DUP2 JUMP JUMPDEST PUSH1 0x70 DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SHR 0xAF CALLER SWAP1 JUMPI DUP11 DUP9 0xC5 0xD5 OR PUSH28 0x2E0931735D3563021025264B2DAD607532C8EC4EDB64736F6C634300 MOD MOD STOP CALLER ","sourceMap":"275:5884:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;564:62:23;;;:::i;:::-;;;;;;;;;;;;;;;;520:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;564:62;-1:-1:-1;;;564:62:23;:::o;520:38::-;555:3;520:38;:::o"},"methodIdentifiers":{"Q112()":"3bf7a83e","RESOLUTION()":"552f888a"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Q112\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESOLUTION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/libraries/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/libraries/Babylonian.sol\":{\"keccak256\":\"0xeb1c2a281a00f4660775f75ccfa1e51fbe1d75f86aeb9d0d297151ecdb900177\",\"urls\":[\"bzz-raw://68515f0265381bddfb1d1356ea10ce4e5784276fc09f197fcdcedfa5c75cc069\",\"dweb:/ipfs/QmXWVVPnuJwRUAu3Qpu1s7Fyc5WPQxmZPczVEe5cJ5wVHZ\"]},\"contracts/periphery/libraries/BitMath.sol\":{\"keccak256\":\"0x19f84d5268286794b44939ec0d85b3c6f59e133f826cdbd9e40112fc94919bb7\",\"urls\":[\"bzz-raw://d21c67ed58cf667d052e141df2fba76c46c159edcc45eb897c908c20c69d2727\",\"dweb:/ipfs/QmUyKz1992wgR8nYAzBuQzjBAKMxLAN3hTgzpYJxusbmVH\"]},\"contracts/periphery/libraries/FixedPoint.sol\":{\"keccak256\":\"0x127ecf7db1a5b5a38610f3f11337715fc00ba57ee412fa6978dcf2cf58eccdf7\",\"urls\":[\"bzz-raw://f7027d233bc1f41809e484d6866ddf2408897994cbe8c9ab99f397767bbd13db\",\"dweb:/ipfs/QmPr72ABBnRTSoZZmkygzgskZzogZb1M74U9Tf2DHH62xn\"]},\"contracts/periphery/libraries/FullMath.sol\":{\"keccak256\":\"0xc4ffcf28169f73fc9fdd1f82345d6d4fcccf3fd5aea83c133437c25e4e0950a9\",\"urls\":[\"bzz-raw://c9257a47501005f0a648bc4801ef4abc33843681aaf03a6d0c43d46b69e37407\",\"dweb:/ipfs/QmciHvDrqhxs5fjsrm9aNq29FZXpunMn17n2wWj83Zsh3B\"]}},\"version\":1}"}},"contracts/periphery/libraries/FullMath.sol":{"FullMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dcf185ff7abcfcb67e2a738a588acac615ff241e533d0cb69cbb37622c01aeaf64736f6c63430006060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC CALL DUP6 SELFDESTRUCT PUSH27 0xBCFCB67E2A738A588ACAC615FF241E533D0CB69CBB37622C01AEAF PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"193:1079:24:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220dcf185ff7abcfcb67e2a738a588acac615ff241e533d0cb69cbb37622c01aeaf64736f6c63430006060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDC CALL DUP6 SELFDESTRUCT PUSH27 0xBCFCB67E2A738A588ACAC615FF241E533D0CB69CBB37622C01AEAF PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"193:1079:24:-:0;;;;;;12:1:-1;9;2:12"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/libraries/FullMath.sol\":\"FullMath\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/libraries/FullMath.sol\":{\"keccak256\":\"0xc4ffcf28169f73fc9fdd1f82345d6d4fcccf3fd5aea83c133437c25e4e0950a9\",\"urls\":[\"bzz-raw://c9257a47501005f0a648bc4801ef4abc33843681aaf03a6d0c43d46b69e37407\",\"dweb:/ipfs/QmciHvDrqhxs5fjsrm9aNq29FZXpunMn17n2wWj83Zsh3B\"]}},\"version\":1}"}},"contracts/periphery/libraries/SafeMath.sol":{"SafeMath":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fa97ec6ea6287d93cea61f1f55b4f71e45b5250f60009159fae4b741beeae0ae64736f6c63430006060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL SWAP8 0xEC PUSH15 0xA6287D93CEA61F1F55B4F71E45B525 0xF PUSH1 0x0 SWAP2 MSIZE STATICCALL 0xE4 0xB7 COINBASE 0xBE 0xEA 0xE0 0xAE PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"131:430:25:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fa97ec6ea6287d93cea61f1f55b4f71e45b5250f60009159fae4b741beeae0ae64736f6c63430006060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL SWAP8 0xEC PUSH15 0xA6287D93CEA61F1F55B4F71E45B525 0xF PUSH1 0x0 SWAP2 MSIZE STATICCALL 0xE4 0xB7 COINBASE 0xBE 0xEA 0xE0 0xAE PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"131:430:25:-:0;;;;;;12:1:-1;9;2:12"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/libraries/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1\",\"urls\":[\"bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c\",\"dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg\"]}},\"version\":1}"}},"contracts/periphery/libraries/TransferHelper.sol":{"TransferHelper":{"abi":[],"evm":{"bytecode":{"linkReferences":{},"object":"60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c8f1880cc053d3afe7139d0fabb52a88621cc234a3016bd52307829ff71f170864736f6c63430006060033","opcodes":"PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC8 CALL DUP9 0xC 0xC0 MSTORE8 0xD3 0xAF 0xE7 SGT SWAP14 0xF 0xAB 0xB5 0x2A DUP9 PUSH3 0x1CC234 LOG3 ADD PUSH12 0xD52307829FF71F170864736F PUSH13 0x63430006060033000000000000 ","sourceMap":"183:1621:26:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c8f1880cc053d3afe7139d0fabb52a88621cc234a3016bd52307829ff71f170864736f6c63430006060033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC8 CALL DUP9 0xC 0xC0 MSTORE8 0xD3 0xAF 0xE7 SGT SWAP14 0xF 0xAB 0xB5 0x2A DUP9 PUSH3 0x1CC234 LOG3 ADD PUSH12 0xD52307829FF71F170864736F PUSH13 0x63430006060033000000000000 ","sourceMap":"183:1621:26:-:0;;;;;;12:1:-1;9;2:12"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/libraries/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/libraries/TransferHelper.sol\":{\"keccak256\":\"0x91888c39fcda3d21089c867d943b013f02165203b62e6925b898e5652df313e0\",\"urls\":[\"bzz-raw://ef6af53c706fd1e4a3f5b974bf46f5b811cad331126802f466a56e53b32757a7\",\"dweb:/ipfs/QmdWuxHaLq1wyFgTo5aBBAEcqE2XqGwi249rr8NsTY9qsu\"]}},\"version\":1}"}},"contracts/periphery/test/DeflatingERC20.sol":{"DeflatingERC20":{"abi":[{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051610bf8380380610bf88339818101604052602081101561003357600080fd5b505160405161414e90806052610ba68239604080519182900360520182208282018252601483527f4465666c6174696e67205465737420546f6b656e00000000000000000000000060209384015281518083018352600181527f3100000000000000000000000000000000000000000000000000000000000000908401528151808401919091527ff89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018590523060a0808301919091528251808303909101815260c090910190915280519101206003555061014433836001600160e01b0361014b16565b5050610265565b610164816000546101ed60201b6108ad1790919060201c565b60009081556001600160a01b0383168152600160209081526040909120546101959183906108ad6101ed821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b8082018281101561025f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b610932806102746000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461025b578063a9059cbb14610263578063d505accf1461028f578063dd62ed3e146102e2576100cf565b80633644e5151461020757806370a082311461020f5780637ecebe0014610235576100cf565b806306fdde03146100d4578063095ea7b31461015157806318160ddd1461019157806323b872dd146101ab57806330adf81f146101e1578063313ce567146101e9575b600080fd5b6100dc610310565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101165781810151838201526020016100fe565b50505050905090810190601f1680156101435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561016757600080fd5b506001600160a01b038135169060200135610340565b604080519115158252519081900360200190f35b610199610357565b60408051918252519081900360200190f35b61017d600480360360608110156101c157600080fd5b506001600160a01b0381358116916020810135909116906040013561035d565b6101996103f7565b6101f161041b565b6040805160ff9092168252519081900360200190f35b610199610420565b6101996004803603602081101561022557600080fd5b50356001600160a01b0316610426565b6101996004803603602081101561024b57600080fd5b50356001600160a01b0316610438565b6100dc61044a565b61017d6004803603604081101561027957600080fd5b506001600160a01b038135169060200135610469565b6102e0600480360360e08110156102a557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610476565b005b610199600480360360408110156102f857600080fd5b506001600160a01b0381358116916020013516610661565b604051806040016040528060148152602001732232b33630ba34b733902a32b9ba102a37b5b2b760611b81525081565b600061034d33848461067e565b5060015b92915050565b60005481565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146103e2576001600160a01b03841660009081526002602090815260408083203384529091529020546103bd908363ffffffff6106e016565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6103ed848484610730565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020016211151560ea1b81525081565b600061034d338484610730565b428410156104b5576040805162461bcd60e51b81526020600482015260076024820152661156141254915160ca1b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156105d0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106065750886001600160a01b0316816001600160a01b0316145b61064b576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61065689898961067e565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b80820382811115610351576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6064810461073e848261080f565b6000610750838363ffffffff6106e016565b6001600160a01b03861660009081526001602052604090205490915061077c908263ffffffff6106e016565b6001600160a01b0380871660009081526001602052604080822093909355908616815220546107b1908263ffffffff6108ad16565b6001600160a01b0380861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b6001600160a01b038216600090815260016020526040902054610838908263ffffffff6106e016565b6001600160a01b03831660009081526001602052604081209190915554610865908263ffffffff6106e016565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b80820182811015610351576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea264697066735822122072dca9eff2ac824a7461d4b6248de2c74c60102893c5ae24e6fa0a5cd09ad5d164736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xBF8 CODESIZE SUB DUP1 PUSH2 0xBF8 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 MLOAD PUSH2 0x414E SWAP1 DUP1 PUSH1 0x52 PUSH2 0xBA6 DUP3 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x52 ADD DUP3 KECCAK256 DUP3 DUP3 ADD DUP3 MSTORE PUSH1 0x14 DUP4 MSTORE PUSH32 0x4465666C6174696E67205465737420546F6B656E000000000000000000000000 PUSH1 0x20 SWAP4 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0xF89E31130E6FD3D87D62A1AC2770FBA58BED5A06C47CE70FA97F8218B1B2743A DUP2 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE POP PUSH2 0x144 CALLER DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x14B AND JUMP JUMPDEST POP POP PUSH2 0x265 JUMP JUMPDEST PUSH2 0x164 DUP2 PUSH1 0x0 SLOAD PUSH2 0x1ED PUSH1 0x20 SHL PUSH2 0x8AD OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x195 SWAP2 DUP4 SWAP1 PUSH2 0x8AD PUSH2 0x1ED DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x25F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x932 DUP1 PUSH2 0x274 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2E2 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x235 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1E9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x310 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x116 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x143 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x340 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH2 0x357 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x199 PUSH2 0x3F7 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x41B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH2 0x420 JUMP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x426 JUMP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x438 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x44A JUMP JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x469 JUMP JUMPDEST PUSH2 0x2E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x476 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH20 0x2232B33630BA34B733902A32B9BA102A37B5B2B7 PUSH1 0x61 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34D CALLER DUP5 DUP5 PUSH2 0x67E JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x0 NOT EQ PUSH2 0x3E2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3BD SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x6E0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x3ED DUP5 DUP5 DUP5 PUSH2 0x730 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x111515 PUSH1 0xEA SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34D CALLER DUP5 DUP5 PUSH2 0x730 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x11561412549151 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x606 JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x64B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x656 DUP10 DUP10 DUP10 PUSH2 0x67E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x351 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 DIV PUSH2 0x73E DUP5 DUP3 PUSH2 0x80F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x750 DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x6E0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x77C SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x6E0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP7 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7B1 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8AD AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP10 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x838 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x6E0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x865 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x6E0 AND JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x351 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0xDCA9EFF2AC824A7461D4B6248DE2C74C601028 SWAP4 0xC5 0xAE 0x24 0xE6 STATICCALL EXP 0x5C 0xD0 SWAP11 0xD5 0xD1 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER GASLIMIT 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH20 0x7472696E672076657273696F6E2C75696E743235 CALLDATASIZE KECCAK256 PUSH4 0x6861696E 0x49 PUSH5 0x2C61646472 PUSH6 0x737320766572 PUSH10 0x6679696E67436F6E7472 PUSH2 0x6374 0x29 ","sourceMap":"62:4012:27:-:0;;;922:495;5:9:-1;2:2;;;27:1;24;17:12;2:2;922:495:27;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;922:495:27;1077:133;;991:6;;1077:133;;;;;;;;;;;;;;;;1244:4;;;;;;;;;;;;;;1278:10;;;;;;;;;;;;;;;1049:310;;;;;;;;;1228:22;1049:310;;;;1268:21;1049:310;;;;;;;;;;1340:4;1049:310;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1049:310:27;;;;;;;1026:343;;;;;1007:16;:362;-1:-1:-1;1379:31:27;1385:10;1397:12;-1:-1:-1;;;;;1379:5:27;:31;:::i;:::-;922:495;;62:4012;;1423:200;1498:22;1514:5;1498:11;;:15;;;;;;:22;;;;:::i;:::-;1484:11;:36;;;-1:-1:-1;;;;;1546:13:27;;;;:9;:13;;;;;;;;;:24;;1564:5;;1546:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1530:13:27;;;;;;:9;:13;;;;;;;;:40;;;;1585:31;;;;;;;1530:13;;;;1585:31;;;;;;;;;;1423:200;;:::o;154:126:25:-;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;;;;:::o;62:4012:27:-;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461025b578063a9059cbb14610263578063d505accf1461028f578063dd62ed3e146102e2576100cf565b80633644e5151461020757806370a082311461020f5780637ecebe0014610235576100cf565b806306fdde03146100d4578063095ea7b31461015157806318160ddd1461019157806323b872dd146101ab57806330adf81f146101e1578063313ce567146101e9575b600080fd5b6100dc610310565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101165781810151838201526020016100fe565b50505050905090810190601f1680156101435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561016757600080fd5b506001600160a01b038135169060200135610340565b604080519115158252519081900360200190f35b610199610357565b60408051918252519081900360200190f35b61017d600480360360608110156101c157600080fd5b506001600160a01b0381358116916020810135909116906040013561035d565b6101996103f7565b6101f161041b565b6040805160ff9092168252519081900360200190f35b610199610420565b6101996004803603602081101561022557600080fd5b50356001600160a01b0316610426565b6101996004803603602081101561024b57600080fd5b50356001600160a01b0316610438565b6100dc61044a565b61017d6004803603604081101561027957600080fd5b506001600160a01b038135169060200135610469565b6102e0600480360360e08110156102a557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610476565b005b610199600480360360408110156102f857600080fd5b506001600160a01b0381358116916020013516610661565b604051806040016040528060148152602001732232b33630ba34b733902a32b9ba102a37b5b2b760611b81525081565b600061034d33848461067e565b5060015b92915050565b60005481565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146103e2576001600160a01b03841660009081526002602090815260408083203384529091529020546103bd908363ffffffff6106e016565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6103ed848484610730565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020016211151560ea1b81525081565b600061034d338484610730565b428410156104b5576040805162461bcd60e51b81526020600482015260076024820152661156141254915160ca1b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156105d0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106065750886001600160a01b0316816001600160a01b0316145b61064b576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61065689898961067e565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b80820382811115610351576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6064810461073e848261080f565b6000610750838363ffffffff6106e016565b6001600160a01b03861660009081526001602052604090205490915061077c908263ffffffff6106e016565b6001600160a01b0380871660009081526001602052604080822093909355908616815220546107b1908263ffffffff6108ad16565b6001600160a01b0380861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b6001600160a01b038216600090815260016020526040902054610838908263ffffffff6106e016565b6001600160a01b03831660009081526001602052604081209190915554610865908263ffffffff6106e016565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b80820182811015610351576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea264697066735822122072dca9eff2ac824a7461d4b6248de2c74c60102893c5ae24e6fa0a5cd09ad5d164736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2E2 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x235 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1E9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x310 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x116 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x143 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x340 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH2 0x357 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x35D JUMP JUMPDEST PUSH2 0x199 PUSH2 0x3F7 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x41B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH2 0x420 JUMP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x426 JUMP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x438 JUMP JUMPDEST PUSH2 0xDC PUSH2 0x44A JUMP JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x469 JUMP JUMPDEST PUSH2 0x2E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x476 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH20 0x2232B33630BA34B733902A32B9BA102A37B5B2B7 PUSH1 0x61 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34D CALLER DUP5 DUP5 PUSH2 0x67E JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x0 NOT EQ PUSH2 0x3E2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3BD SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x6E0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x3ED DUP5 DUP5 DUP5 PUSH2 0x730 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x111515 PUSH1 0xEA SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34D CALLER DUP5 DUP5 PUSH2 0x730 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x4B5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x11561412549151 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5D0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x606 JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x64B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x656 DUP10 DUP10 DUP10 PUSH2 0x67E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x351 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 DIV PUSH2 0x73E DUP5 DUP3 PUSH2 0x80F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x750 DUP4 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x6E0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x77C SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x6E0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP7 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x7B1 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x8AD AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP10 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x838 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x6E0 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x865 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x6E0 AND JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x351 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH19 0xDCA9EFF2AC824A7461D4B6248DE2C74C601028 SWAP4 0xC5 0xAE 0x24 0xE6 STATICCALL EXP 0x5C 0xD0 SWAP11 0xD5 0xD1 PUSH5 0x736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"62:4012:27:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;62:4012:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;125:52:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;125:52:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2461:147;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2461:147:27;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;267:26;;;:::i;:::-;;;;;;;;;;;;;;;;2759:361;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2759:361:27;;;;;;;;;;;;;;;;;:::i;561:116::-;;;:::i;226:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;420:31;;;:::i;299:44::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;299:44:27;-1:-1:-1;;;;;299:44:27;;:::i;683:41::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;683:41:27;-1:-1:-1;;;;;683:41:27;;:::i;183:37::-;;;:::i;2614:139::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2614:139:27;;;;;;;;:::i;3126:946::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;3126:946:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;349:64;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;349:64:27;;;;;;;;;;:::i;125:52::-;;;;;;;;;;;;;;-1:-1:-1;;;125:52:27;;;;:::o;2461:147::-;2528:4;2544:36;2553:10;2565:7;2574:5;2544:8;:36::i;:::-;-1:-1:-1;2597:4:27;2461:147;;;;;:::o;267:26::-;;;;:::o;2759:361::-;-1:-1:-1;;;;;2890:15:27;;2870:4;2890:15;;;:9;:15;;;;;;;;2906:10;2890:27;;;;;;;;-1:-1:-1;;2890:42:27;2886:171;;-1:-1:-1;;;;;2978:15:27;;;;;;:9;:15;;;;;;;;2994:10;2978:27;;;;;;;;:68;;3027:5;2978:68;:31;:68;:::i;:::-;-1:-1:-1;;;;;2948:15:27;;;;;;:9;:15;;;;;;;;2964:10;2948:27;;;;;;;:98;2886:171;3066:26;3076:4;3082:2;3086:5;3066:9;:26::i;:::-;-1:-1:-1;3109:4:27;2759:361;;;;;:::o;561:116::-;611:66;561:116;:::o;226:35::-;259:2;226:35;:::o;420:31::-;;;;:::o;299:44::-;;;;;;;;;;;;;:::o;683:41::-;;;;;;;;;;;;;:::o;183:37::-;;;;;;;;;;;;;;-1:-1:-1;;;183:37:27;;;;:::o;2614:139::-;2677:4;2693:32;2703:10;2715:2;2719:5;2693:9;:32::i;3126:946::-;3339:15;3327:8;:27;;3319:47;;;;;-1:-1:-1;;;3319:47:27;;;;;;;;;;;;-1:-1:-1;;;3319:47:27;;;;;;;;;;;;;;;3478:16;;-1:-1:-1;;;;;3715:13:27;;;3376:14;3715:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3543:243;;611:66;3543:243;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3543:243:27;;;;;3512:292;;;;;;-1:-1:-1;;;3416:402:27;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3416:402:27;;;;;;3393:435;;;;;;;;;3865:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3376:14;;3715:15;3865:26;;;;;-1:-1:-1;;3865:26:27;;;;;;;;;;3715:15;3865:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3865:26:27;;-1:-1:-1;;3865:26:27;;;-1:-1:-1;;;;;;;3922:30:27;;;;;;:59;;;3976:5;-1:-1:-1;;;;;3956:25:27;:16;-1:-1:-1;;;;;3956:25:27;;3922:59;3901:123;;;;;-1:-1:-1;;;3901:123:27;;;;;;;;;;;;-1:-1:-1;;;3901:123:27;;;;;;;;;;;;;;;4034:31;4043:5;4050:7;4059:5;4034:8;:31::i;:::-;3126:946;;;;;;;;;:::o;349:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1843:199::-;-1:-1:-1;;;;;1956:16:27;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2004:31;;;;;;;;;;;;;;;;;1843:199;;;:::o;286:127:25:-;369:5;;;364:16;;;;356:50;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;;;2048:407:27;2185:3;2177:11;;2198:23;2204:4;2177:11;2198:5;:23::i;:::-;2231:22;2256:21;:5;2266:10;2256:21;:9;:21;:::i;:::-;-1:-1:-1;;;;;2305:15:27;;;;;;:9;:15;;;;;;2231:46;;-1:-1:-1;2305:35:27;;2231:46;2305:35;:19;:35;:::i;:::-;-1:-1:-1;;;;;2287:15:27;;;;;;;:9;:15;;;;;;:53;;;;2366:13;;;;;;;:33;;2384:14;2366:33;:17;:33;:::i;:::-;-1:-1:-1;;;;;2350:13:27;;;;;;;:9;:13;;;;;;;;;:49;;;;2414:34;;;;;;;2350:13;;2414:34;;;;;;;;;;;;;2048:407;;;;;:::o;1629:208::-;-1:-1:-1;;;;;1710:15:27;;;;;;:9;:15;;;;;;:26;;1730:5;1710:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;1692:15:27;;;;;;:9;:15;;;;;:44;;;;1760:11;:22;;1776:5;1760:22;:15;:22;:::i;:::-;1746:11;:36;;;1797:33;;;;;;;;-1:-1:-1;;;;;1797:33:27;;;;;;;;;;;;;1629:208;;:::o;154:126:25:-;237:5;;;232:16;;;;224:49;;;;;-1:-1:-1;;;224:49:25;;;;;;;;;;;;-1:-1:-1;;;224:49:25;;;;;;;;;;;;;"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/test/DeflatingERC20.sol\":\"DeflatingERC20\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1\",\"urls\":[\"bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c\",\"dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg\"]},\"contracts/periphery/test/DeflatingERC20.sol\":{\"keccak256\":\"0xc8ad09cf0cff45fcc7994b1139cf24ad1b9c3acaff023063a230aca2c36523ac\",\"urls\":[\"bzz-raw://9242eb288d5ac582cbfb90def00453602235550e3ed326429d4611dd56a7c648\",\"dweb:/ipfs/QmNYvELVjcwANYFUt6FSsyr2H7M1bHW8UeMu56jUA7JTUR\"]}},\"version\":1}"}},"contracts/periphery/test/ERC20.sol":{"ERC20":{"abi":[{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051610b2a380380610b2a8339818101604052602081101561003357600080fd5b505160405161414e90806052610ad88239604080519182900360520182208282018252600a83527f5465737420546f6b656e0000000000000000000000000000000000000000000060209384015281518083018352600181527f3100000000000000000000000000000000000000000000000000000000000000908401528151808401919091527f81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018590523060a0808301919091528251808303909101815260c090910190915280519101206003555061014433836001600160e01b0361014b16565b5050610265565b610164816000546101ed60201b6107df1790919060201c565b60009081556001600160a01b0383168152600160209081526040909120546101959183906107df6101ed821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b8082018281101561025f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b610864806102746000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461025b578063a9059cbb14610263578063d505accf1461028f578063dd62ed3e146102e2576100cf565b80633644e5151461020757806370a082311461020f5780637ecebe0014610235576100cf565b806306fdde03146100d4578063095ea7b31461015157806318160ddd1461019157806323b872dd146101ab57806330adf81f146101e1578063313ce567146101e9575b600080fd5b6100dc610310565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101165781810151838201526020016100fe565b50505050905090810190601f1680156101435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561016757600080fd5b506001600160a01b038135169060200135610336565b604080519115158252519081900360200190f35b61019961034d565b60408051918252519081900360200190f35b61017d600480360360608110156101c157600080fd5b506001600160a01b03813581169160208101359091169060400135610353565b6101996103ed565b6101f1610411565b6040805160ff9092168252519081900360200190f35b610199610416565b6101996004803603602081101561022557600080fd5b50356001600160a01b031661041c565b6101996004803603602081101561024b57600080fd5b50356001600160a01b031661042e565b6100dc610440565b61017d6004803603604081101561027957600080fd5b506001600160a01b03813516906020013561045e565b6102e0600480360360e08110156102a557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561046b565b005b610199600480360360408110156102f857600080fd5b506001600160a01b0381358116916020013516610656565b6040518060400160405280600a8152602001692a32b9ba102a37b5b2b760b11b81525081565b6000610343338484610673565b5060015b92915050565b60005481565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146103d8576001600160a01b03841660009081526002602090815260408083203384529091529020546103b3908363ffffffff6106d516565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6103e3848484610725565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b60405180604001604052806002815260200161151560f21b81525081565b6000610343338484610725565b428410156104aa576040805162461bcd60e51b81526020600482015260076024820152661156141254915160ca1b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156105c5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906105fb5750886001600160a01b0316816001600160a01b0316145b610640576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61064b898989610673565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b80820382811115610347576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160a01b03831660009081526001602052604090205461074e908263ffffffff6106d516565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610783908263ffffffff6107df16565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b80820182811015610347576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea2646970667358221220585ec3d14cbe1e1a62a705867c6d8df57ecbf82e03e4796c399a927b2f4da27064736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB2A CODESIZE SUB DUP1 PUSH2 0xB2A DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 MLOAD PUSH2 0x414E SWAP1 DUP1 PUSH1 0x52 PUSH2 0xAD8 DUP3 CODECOPY PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB PUSH1 0x52 ADD DUP3 KECCAK256 DUP3 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP4 MSTORE PUSH32 0x5465737420546F6B656E00000000000000000000000000000000000000000000 PUSH1 0x20 SWAP4 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3100000000000000000000000000000000000000000000000000000000000000 SWAP1 DUP5 ADD MSTORE DUP2 MLOAD DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x81E8AD438398AB0D4A2A7ECB159490C091BB27C67ACE5181F70084E30FADAEA2 DUP2 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP2 ADD DUP6 SWAP1 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE POP PUSH2 0x144 CALLER DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH2 0x14B AND JUMP JUMPDEST POP POP PUSH2 0x265 JUMP JUMPDEST PUSH2 0x164 DUP2 PUSH1 0x0 SLOAD PUSH2 0x1ED PUSH1 0x20 SHL PUSH2 0x7DF OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x195 SWAP2 DUP4 SWAP1 PUSH2 0x7DF PUSH2 0x1ED DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x25F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x864 DUP1 PUSH2 0x274 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2E2 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x235 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1E9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x310 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x116 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x143 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x336 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x353 JUMP JUMPDEST PUSH2 0x199 PUSH2 0x3ED JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x411 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH2 0x416 JUMP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x41C JUMP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x42E JUMP JUMPDEST PUSH2 0xDC PUSH2 0x440 JUMP JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x45E JUMP JUMPDEST PUSH2 0x2E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x46B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x656 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH10 0x2A32B9BA102A37B5B2B7 PUSH1 0xB1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x343 CALLER DUP5 DUP5 PUSH2 0x673 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x0 NOT EQ PUSH2 0x3D8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3B3 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x6D5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x3E3 DUP5 DUP5 DUP5 PUSH2 0x725 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1515 PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x343 CALLER DUP5 DUP5 PUSH2 0x725 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x11561412549151 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5FB JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x640 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x64B DUP10 DUP10 DUP10 PUSH2 0x673 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x347 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x74E SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x6D5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x783 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x7DF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x347 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PC 0x5E 0xC3 0xD1 0x4C 0xBE 0x1E BYTE PUSH3 0xA70586 PUSH29 0x6D8DF57ECBF82E03E4796C399A927B2F4DA27064736F6C634300060600 CALLER GASLIMIT 0x49 POP CALLDATACOPY BALANCE ORIGIN DIFFICULTY PUSH16 0x6D61696E28737472696E67206E616D65 0x2C PUSH20 0x7472696E672076657273696F6E2C75696E743235 CALLDATASIZE KECCAK256 PUSH4 0x6861696E 0x49 PUSH5 0x2C61646472 PUSH6 0x737320766572 PUSH10 0x6679696E67436F6E7472 PUSH2 0x6374 0x29 ","sourceMap":"62:3834:28:-:0;;;902:495;5:9:-1;2:2;;;27:1;24;17:12;2:2;902:495:28;;;;;;;;;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;902:495:28;1057:133;;971:6;;1057:133;;;;;;;;;;;;;;;;1224:4;;;;;;;;;;;;;;1258:10;;;;;;;;;;;;;;;1029:310;;;;;;;;;1208:22;1029:310;;;;1248:21;1029:310;;;;;;;;;;1320:4;1029:310;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1029:310:28;;;;;;;1006:343;;;;;987:16;:362;-1:-1:-1;1359:31:28;1365:10;1377:12;-1:-1:-1;;;;;1359:5:28;:31;:::i;:::-;902:495;;62:3834;;1403:200;1478:22;1494:5;1478:11;;:15;;;;;;:22;;;;:::i;:::-;1464:11;:36;;;-1:-1:-1;;;;;1526:13:28;;;;:9;:13;;;;;;;;;:24;;1544:5;;1526:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1510:13:28;;;;;;:9;:13;;;;;;;;:40;;;;1565:31;;;;;;;1510:13;;;;1565:31;;;;;;;;;;1403:200;;:::o;154:126:25:-;237:5;;;232:16;;;;224:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;154:126;;;;:::o;62:3834:28:-;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461025b578063a9059cbb14610263578063d505accf1461028f578063dd62ed3e146102e2576100cf565b80633644e5151461020757806370a082311461020f5780637ecebe0014610235576100cf565b806306fdde03146100d4578063095ea7b31461015157806318160ddd1461019157806323b872dd146101ab57806330adf81f146101e1578063313ce567146101e9575b600080fd5b6100dc610310565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101165781810151838201526020016100fe565b50505050905090810190601f1680156101435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561016757600080fd5b506001600160a01b038135169060200135610336565b604080519115158252519081900360200190f35b61019961034d565b60408051918252519081900360200190f35b61017d600480360360608110156101c157600080fd5b506001600160a01b03813581169160208101359091169060400135610353565b6101996103ed565b6101f1610411565b6040805160ff9092168252519081900360200190f35b610199610416565b6101996004803603602081101561022557600080fd5b50356001600160a01b031661041c565b6101996004803603602081101561024b57600080fd5b50356001600160a01b031661042e565b6100dc610440565b61017d6004803603604081101561027957600080fd5b506001600160a01b03813516906020013561045e565b6102e0600480360360e08110156102a557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561046b565b005b610199600480360360408110156102f857600080fd5b506001600160a01b0381358116916020013516610656565b6040518060400160405280600a8152602001692a32b9ba102a37b5b2b760b11b81525081565b6000610343338484610673565b5060015b92915050565b60005481565b6001600160a01b0383166000908152600260209081526040808320338452909152812054600019146103d8576001600160a01b03841660009081526002602090815260408083203384529091529020546103b3908363ffffffff6106d516565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b6103e3848484610725565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b60405180604001604052806002815260200161151560f21b81525081565b6000610343338484610725565b428410156104aa576040805162461bcd60e51b81526020600482015260076024820152661156141254915160ca1b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa1580156105c5573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906105fb5750886001600160a01b0316816001600160a01b0316145b610640576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b61064b898989610673565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b80820382811115610347576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160a01b03831660009081526001602052604090205461074e908263ffffffff6106d516565b6001600160a01b038085166000908152600160205260408082209390935590841681522054610783908263ffffffff6107df16565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b80820182811015610347576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea2646970667358221220585ec3d14cbe1e1a62a705867c6d8df57ecbf82e03e4796c399a927b2f4da27064736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2E2 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x235 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1E9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x310 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x116 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x143 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x336 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x353 JUMP JUMPDEST PUSH2 0x199 PUSH2 0x3ED JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x411 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH2 0x416 JUMP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x41C JUMP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x42E JUMP JUMPDEST PUSH2 0xDC PUSH2 0x440 JUMP JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x45E JUMP JUMPDEST PUSH2 0x2E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x46B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x656 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH10 0x2A32B9BA102A37B5B2B7 PUSH1 0xB1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x343 CALLER DUP5 DUP5 PUSH2 0x673 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x0 NOT EQ PUSH2 0x3D8 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3B3 SWAP1 DUP4 PUSH4 0xFFFFFFFF PUSH2 0x6D5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x3E3 DUP5 DUP5 DUP5 PUSH2 0x725 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1515 PUSH1 0xF2 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x343 CALLER DUP5 DUP5 PUSH2 0x725 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x11561412549151 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5FB JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x640 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x64B DUP10 DUP10 DUP10 PUSH2 0x673 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x347 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x64732D6D6174682D7375622D756E646572666C6F77 PUSH1 0x58 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x74E SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x6D5 AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x783 SWAP1 DUP3 PUSH4 0xFFFFFFFF PUSH2 0x7DF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x347 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x64732D6D6174682D6164642D6F766572666C6F77 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PC 0x5E 0xC3 0xD1 0x4C 0xBE 0x1E BYTE PUSH3 0xA70586 PUSH29 0x6D8DF57ECBF82E03E4796C399A927B2F4DA27064736F6C634300060600 CALLER ","sourceMap":"62:3834:28:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;62:3834:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;116:42:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;116:42:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2283:147;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2283:147:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;247:26;;;:::i;:::-;;;;;;;;;;;;;;;;2581:361;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2581:361:28;;;;;;;;;;;;;;;;;:::i;541:116::-;;;:::i;206:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;400:31;;;:::i;279:44::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;279:44:28;-1:-1:-1;;;;;279:44:28;;:::i;663:41::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;663:41:28;-1:-1:-1;;;;;663:41:28;;:::i;164:36::-;;;:::i;2436:139::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;2436:139:28;;;;;;;;:::i;2948:946::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;;2948:946:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;329:64;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;329:64:28;;;;;;;;;;:::i;116:42::-;;;;;;;;;;;;;;-1:-1:-1;;;116:42:28;;;;:::o;2283:147::-;2350:4;2366:36;2375:10;2387:7;2396:5;2366:8;:36::i;:::-;-1:-1:-1;2419:4:28;2283:147;;;;;:::o;247:26::-;;;;:::o;2581:361::-;-1:-1:-1;;;;;2712:15:28;;2692:4;2712:15;;;:9;:15;;;;;;;;2728:10;2712:27;;;;;;;;-1:-1:-1;;2712:42:28;2708:171;;-1:-1:-1;;;;;2800:15:28;;;;;;:9;:15;;;;;;;;2816:10;2800:27;;;;;;;;:68;;2849:5;2800:68;:31;:68;:::i;:::-;-1:-1:-1;;;;;2770:15:28;;;;;;:9;:15;;;;;;;;2786:10;2770:27;;;;;;;:98;2708:171;2888:26;2898:4;2904:2;2908:5;2888:9;:26::i;:::-;-1:-1:-1;2931:4:28;2581:361;;;;;:::o;541:116::-;591:66;541:116;:::o;206:35::-;239:2;206:35;:::o;400:31::-;;;;:::o;279:44::-;;;;;;;;;;;;;:::o;663:41::-;;;;;;;;;;;;;:::o;164:36::-;;;;;;;;;;;;;;-1:-1:-1;;;164:36:28;;;;:::o;2436:139::-;2499:4;2515:32;2525:10;2537:2;2541:5;2515:9;:32::i;2948:946::-;3161:15;3149:8;:27;;3141:47;;;;;-1:-1:-1;;;3141:47:28;;;;;;;;;;;;-1:-1:-1;;;3141:47:28;;;;;;;;;;;;;;;3300:16;;-1:-1:-1;;;;;3537:13:28;;;3198:14;3537:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3365:243;;591:66;3365:243;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3365:243:28;;;;;3334:292;;;;;;-1:-1:-1;;;3238:402:28;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3238:402:28;;;;;;3215:435;;;;;;;;;3687:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3198:14;;3537:15;3687:26;;;;;-1:-1:-1;;3687:26:28;;;;;;;;;;3537:15;3687:26;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;3687:26:28;;-1:-1:-1;;3687:26:28;;;-1:-1:-1;;;;;;;3744:30:28;;;;;;:59;;;3798:5;-1:-1:-1;;;;;3778:25:28;:16;-1:-1:-1;;;;;3778:25:28;;3744:59;3723:123;;;;;-1:-1:-1;;;3723:123:28;;;;;;;;;;;;-1:-1:-1;;;3723:123:28;;;;;;;;;;;;;;;3856:31;3865:5;3872:7;3881:5;3856:8;:31::i;:::-;2948:946;;;;;;;;;:::o;329:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1823:199::-;-1:-1:-1;;;;;1936:16:28;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1984:31;;;;;;;;;;;;;;;;;1823:199;;;:::o;286:127:25:-;369:5;;;364:16;;;;356:50;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;-1:-1:-1;;;356:50:25;;;;;;;;;;;;;;2028:249:28;-1:-1:-1;;;;;2154:15:28;;;;;;:9;:15;;;;;;:26;;2174:5;2154:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;2136:15:28;;;;;;;:9;:15;;;;;;:44;;;;2206:13;;;;;;;:24;;2224:5;2206:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;2190:13:28;;;;;;;:9;:13;;;;;;;;;:40;;;;2245:25;;;;;;;2190:13;;2245:25;;;;;;;;;;;;;2028:249;;;:::o;154:126:25:-;237:5;;;232:16;;;;224:49;;;;;-1:-1:-1;;;224:49:25;;;;;;;;;;;;-1:-1:-1;;;224:49:25;;;;;;;;;;;;;"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","PERMIT_TYPEHASH()":"30adf81f","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/test/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/libraries/SafeMath.sol\":{\"keccak256\":\"0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1\",\"urls\":[\"bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c\",\"dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg\"]},\"contracts/periphery/test/ERC20.sol\":{\"keccak256\":\"0x548bd08b242dc2788a8f70fc8b733a98828d3e33f902503851dd67260f52edee\",\"urls\":[\"bzz-raw://7540291972b7a0b5697d4b983fc8b25228b6fad36989396bbf24e1261a5fd568\",\"dweb:/ipfs/QmWTLTiuNRcLgwwCdR7JFevwG1uy4etrir5ryNzeH39Cmk\"]}},\"version\":1}"}},"contracts/periphery/test/RouterEventEmitter.sol":{"RouterEventEmitter":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"Amounts","type":"event"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapAMBForExactTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactAMBForTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForAMB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactAMB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],"evm":{"bytecode":{"linkReferences":{},"object":"608060405234801561001057600080fd5b50610cda806100206000396000f3fe6080604052600436106100595760003560e01c806322b5841014610065578063375734d91461010d5780635e5cb2f0146101b35780636c77b0231461025957806375730639146102eb57806399b327121461039157610060565b3661006057005b600080fd5b34801561007157600080fd5b5061010b600480360360c081101561008857600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156100be57600080fd5b8201836020820111156100d057600080fd5b803590602001918460208302840111600160201b831117156100f157600080fd5b91935091506001600160a01b038135169060200135610423565b005b34801561011957600080fd5b5061010b600480360360c081101561013057600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561016657600080fd5b82018360208201111561017857600080fd5b803590602001918460208302840111600160201b8311171561019957600080fd5b91935091506001600160a01b03813516906020013561069c565b3480156101bf57600080fd5b5061010b600480360360c08110156101d657600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561020c57600080fd5b82018360208201111561021e57600080fd5b803590602001918460208302840111600160201b8311171561023f57600080fd5b91935091506001600160a01b038135169060200135610785565b61010b600480360360a081101561026f57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561029e57600080fd5b8201836020820111156102b057600080fd5b803590602001918460208302840111600160201b831117156102d157600080fd5b91935091506001600160a01b03813516906020013561086e565b3480156102f757600080fd5b5061010b600480360360c081101561030e57600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561034457600080fd5b82018360208201111561035657600080fd5b803590602001918460208302840111600160201b8311171561037757600080fd5b91935091506001600160a01b038135169060200135610ade565b61010b600480360360a08110156103a757600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156103d657600080fd5b8201836020820111156103e857600080fd5b803590602001918460208302840111600160201b8311171561040957600080fd5b91935091506001600160a01b038135169060200135610bc7565b60006060886001600160a01b0316638803dbee60e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b6020831061050d5780518252601f1990920191602091820191016104ee565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461056d576040519150601f19603f3d011682016040523d82523d6000602084013e610572565b606091505b50915091508161057e57fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b38180602001905160208110156105b457600080fd5b8101908080516040519392919084600160201b8211156105d357600080fd5b9083019060208201858111156105e857600080fd5b82518660208202830111600160201b8211171561060457600080fd5b82525081516020918201928201910280838360005b83811015610631578181015183820152602001610619565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561067e578181015183820152602001610666565b505050509050019250505060405180910390a1505050505050505050565b60006060886001600160a01b03166338ed173960e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083836020831061050d5780518252601f1990920191602091820191016104ee565b60006060886001600160a01b031663e5dee37360e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083836020831061050d5780518252601f1990920191602091820191016104ee565b60006060876001600160a01b031663ef0dc4be60e01b88888888886040516024018086815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b602083106109505780518252601f199092019160209182019101610931565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146109b0576040519150601f19603f3d011682016040523d82523d6000602084013e6109b5565b606091505b5091509150816109c157fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b38180602001905160208110156109f757600080fd5b8101908080516040519392919084600160201b821115610a1657600080fd5b908301906020820185811115610a2b57600080fd5b82518660208202830111600160201b82111715610a4757600080fd5b82525081516020918201928201910280838360005b83811015610a74578181015183820152602001610a5c565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610ac1578181015183820152602001610aa9565b505050509050019250505060405180910390a15050505050505050565b60006060886001600160a01b03166340d2463f60e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083836020831061050d5780518252601f1990920191602091820191016104ee565b60006060876001600160a01b031663ac8ee3b660e01b88888888886040516024018086815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f909201601f199081169094018281039094018252928352602080820180516001600160e01b03166001600160e01b0319909d169c909c178c5292518151919b909a508a9950975095508594508793508692505083106109505780518252601f19909201916020918201910161093156fea26469706673582212205e184b138ff9c6bf5ddb53790370979d0ebeb5437d2cd482fbc12ca4caadf6ce64736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xCDA DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x59 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x22B58410 EQ PUSH2 0x65 JUMPI DUP1 PUSH4 0x375734D9 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x5E5CB2F0 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x6C77B023 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x75730639 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x99B32712 EQ PUSH2 0x391 JUMPI PUSH2 0x60 JUMP JUMPDEST CALLDATASIZE PUSH2 0x60 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x423 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x69C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x785 JUMP JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x26F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x29E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x86E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xADE JUMP JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8803DBEE PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x50D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x56D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x572 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x57E JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x5E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT OR ISZERO PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x631 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x619 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x67E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x666 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38ED1739 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x50D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE5DEE373 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x50D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEF0DC4BE PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x950 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x931 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x9B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x9C1 JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0xA16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0xA2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT OR ISZERO PUSH2 0xA47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA74 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA5C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAC1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAA9 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x40D2463F PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x50D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAC8EE3B6 PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND SWAP1 SWAP5 ADD DUP3 DUP2 SUB SWAP1 SWAP5 ADD DUP3 MSTORE SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP14 AND SWAP13 SWAP1 SWAP13 OR DUP13 MSTORE SWAP3 MLOAD DUP2 MLOAD SWAP2 SWAP12 SWAP1 SWAP11 POP DUP11 SWAP10 POP SWAP8 POP SWAP6 POP DUP6 SWAP5 POP DUP8 SWAP4 POP DUP7 SWAP3 POP POP DUP4 LT PUSH2 0x950 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x931 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5E XOR 0x4B SGT DUP16 0xF9 0xC6 0xBF 0x5D 0xDB MSTORE8 PUSH26 0x370979D0EBEB5437D2CD482FBC12CA4CAADF6CE64736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"69:3093:29:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;69:3093:29;;;;;;;"},"deployedBytecode":{"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100595760003560e01c806322b5841014610065578063375734d91461010d5780635e5cb2f0146101b35780636c77b0231461025957806375730639146102eb57806399b327121461039157610060565b3661006057005b600080fd5b34801561007157600080fd5b5061010b600480360360c081101561008857600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156100be57600080fd5b8201836020820111156100d057600080fd5b803590602001918460208302840111600160201b831117156100f157600080fd5b91935091506001600160a01b038135169060200135610423565b005b34801561011957600080fd5b5061010b600480360360c081101561013057600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561016657600080fd5b82018360208201111561017857600080fd5b803590602001918460208302840111600160201b8311171561019957600080fd5b91935091506001600160a01b03813516906020013561069c565b3480156101bf57600080fd5b5061010b600480360360c08110156101d657600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561020c57600080fd5b82018360208201111561021e57600080fd5b803590602001918460208302840111600160201b8311171561023f57600080fd5b91935091506001600160a01b038135169060200135610785565b61010b600480360360a081101561026f57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561029e57600080fd5b8201836020820111156102b057600080fd5b803590602001918460208302840111600160201b831117156102d157600080fd5b91935091506001600160a01b03813516906020013561086e565b3480156102f757600080fd5b5061010b600480360360c081101561030e57600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561034457600080fd5b82018360208201111561035657600080fd5b803590602001918460208302840111600160201b8311171561037757600080fd5b91935091506001600160a01b038135169060200135610ade565b61010b600480360360a08110156103a757600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b8111156103d657600080fd5b8201836020820111156103e857600080fd5b803590602001918460208302840111600160201b8311171561040957600080fd5b91935091506001600160a01b038135169060200135610bc7565b60006060886001600160a01b0316638803dbee60e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b6020831061050d5780518252601f1990920191602091820191016104ee565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461056d576040519150601f19603f3d011682016040523d82523d6000602084013e610572565b606091505b50915091508161057e57fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b38180602001905160208110156105b457600080fd5b8101908080516040519392919084600160201b8211156105d357600080fd5b9083019060208201858111156105e857600080fd5b82518660208202830111600160201b8211171561060457600080fd5b82525081516020918201928201910280838360005b83811015610631578181015183820152602001610619565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561067e578181015183820152602001610666565b505050509050019250505060405180910390a1505050505050505050565b60006060886001600160a01b03166338ed173960e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083836020831061050d5780518252601f1990920191602091820191016104ee565b60006060886001600160a01b031663e5dee37360e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083836020831061050d5780518252601f1990920191602091820191016104ee565b60006060876001600160a01b031663ef0dc4be60e01b88888888886040516024018086815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b602083106109505780518252601f199092019160209182019101610931565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146109b0576040519150601f19603f3d011682016040523d82523d6000602084013e6109b5565b606091505b5091509150816109c157fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b38180602001905160208110156109f757600080fd5b8101908080516040519392919084600160201b821115610a1657600080fd5b908301906020820185811115610a2b57600080fd5b82518660208202830111600160201b82111715610a4757600080fd5b82525081516020918201928201910280838360005b83811015610a74578181015183820152602001610a5c565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610ac1578181015183820152602001610aa9565b505050509050019250505060405180910390a15050505050505050565b60006060886001600160a01b03166340d2463f60e01b8989898989896040516024018087815260200186815260200180602001846001600160a01b03166001600160a01b031681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083836020831061050d5780518252601f1990920191602091820191016104ee565b60006060876001600160a01b031663ac8ee3b660e01b88888888886040516024018086815260200180602001846001600160a01b03166001600160a01b03168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f909201601f199081169094018281039094018252928352602080820180516001600160e01b03166001600160e01b0319909d169c909c178c5292518151919b909a508a9950975095508594508793508692505083106109505780518252601f19909201916020918201910161093156fea26469706673582212205e184b138ff9c6bf5ddb53790370979d0ebeb5437d2cd482fbc12ca4caadf6ce64736f6c63430006060033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x59 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x22B58410 EQ PUSH2 0x65 JUMPI DUP1 PUSH4 0x375734D9 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x5E5CB2F0 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0x6C77B023 EQ PUSH2 0x259 JUMPI DUP1 PUSH4 0x75730639 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0x99B32712 EQ PUSH2 0x391 JUMPI PUSH2 0x60 JUMP JUMPDEST CALLDATASIZE PUSH2 0x60 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x71 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0xF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x423 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x119 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x130 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x178 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x199 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x69C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x1D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x21E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x785 JUMP JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x26F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x29E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x86E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x30E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x344 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x377 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xADE JUMP JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x409 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xBC7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8803DBEE PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x50D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x56D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x572 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x57E JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0x5D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x5E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT OR ISZERO PUSH2 0x604 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x631 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x619 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x67E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x666 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x38ED1739 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x50D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE5DEE373 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x50D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xEF0DC4BE PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x950 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x931 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x9B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x9B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x9C1 JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT ISZERO PUSH2 0xA16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0xA2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP3 GT OR ISZERO PUSH2 0xA47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xA74 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xA5C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xAC1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xAA9 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x40D2463F PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x50D JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x4EE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xAC8EE3B6 PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F SWAP1 SWAP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND SWAP1 SWAP5 ADD DUP3 DUP2 SUB SWAP1 SWAP5 ADD DUP3 MSTORE SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP14 AND SWAP13 SWAP1 SWAP13 OR DUP13 MSTORE SWAP3 MLOAD DUP2 MLOAD SWAP2 SWAP12 SWAP1 SWAP11 POP DUP11 SWAP10 POP SWAP8 POP SWAP6 POP DUP6 SWAP5 POP DUP8 SWAP4 POP DUP7 SWAP3 POP POP DUP4 LT PUSH2 0x950 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x931 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5E XOR 0x4B SGT DUP16 0xF9 0xC6 0xBF 0x5D 0xDB MSTORE8 PUSH26 0x370979D0EBEB5437D2CD482FBC12CA4CAADF6CE64736F6C6343 STOP MOD MOD STOP CALLER ","sourceMap":"69:3093:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;686:506:29;;5:9:-1;2:2;;;27:1;24;17:12;2:2;686:506:29;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;686:506:29;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;686:506:29;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;686:506:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;686:506:29;;-1:-1:-1;686:506:29;-1:-1:-1;;;;;;686:506:29;;;;;;;;:::i;:::-;;174;;5:9:-1;2:2;;;27:1;24;17:12;2:2;174:506:29;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;174:506:29;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;174:506:29;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;174:506:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;174:506:29;;-1:-1:-1;174:506:29;-1:-1:-1;;;;;;174:506:29;;;;;;;;:::i;2185:500::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2185:500:29;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;2185:500:29;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;2185:500:29;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2185:500:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2185:500:29;;-1:-1:-1;2185:500:29;-1:-1:-1;;;;;;2185:500:29;;;;;;;;:::i;2691:469::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;2691:469:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;2691:469:29;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;2691:469:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;2691:469:29;;-1:-1:-1;2691:469:29;-1:-1:-1;;;;;;2691:469:29;;;;;;;;:::i;1679:500::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1679:500:29;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;1679:500:29;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;1679:500:29;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1679:500:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1679:500:29;;-1:-1:-1;1679:500:29;-1:-1:-1;;;;;;1679:500:29;;;;;;;;:::i;1198:475::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;;;;;1198:475:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;1198:475:29;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;1198:475:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;1198:475:29;;-1:-1:-1;1198:475:29;-1:-1:-1;;;;;;1198:475:29;;;;;;;;:::i;686:506::-;896:12;910:23;937:6;-1:-1:-1;;;;;937:19:29;993:56;;;1051:9;1062:11;1075:4;;1081:2;1085:8;957:146;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;957:146:29;-1:-1:-1;;;;;957:146:29;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;957:146:29;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;957:146:29;;;;-1:-1:-1;;;;;957:146:29;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;957:146:29;937:167;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;937:167:29;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;895:209:29;;;;1121:7;1114:15;;;;1144:41;1163:10;1152:32;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;1152:32:29;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;1152:32:29;;421:4:-1;412:14;;;;1152:32:29;;;;;412:14:-1;1152:32:29;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1152:32:29;;;;;;;;;;;1144:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1144:41:29;;;;;;;;;;;;;;;;;686:506;;;;;;;;;:::o;174:::-;384:12;398:23;425:6;-1:-1:-1;;;;;425:19:29;481:56;;;539:8;549:12;563:4;;569:2;573:8;445:146;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;445:146:29;-1:-1:-1;;;;;445:146:29;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;445:146:29;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;445:146:29;;;;-1:-1:-1;;;;;445:146:29;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;445:146:29;425:167;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;2185:500:29;2392:12;2406:23;2433:6;-1:-1:-1;;;;;2433:19:29;2489:53;;;2544:8;2554:12;2568:4;;2574:2;2578:8;2453:143;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2453:143:29;-1:-1:-1;;;;;2453:143:29;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2453:143:29;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2453:143:29;;;;-1:-1:-1;;;;;2453:143:29;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2453:143:29;2433:164;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;2691:469:29;2880:12;2894:23;2921:6;-1:-1:-1;;;;;2921:19:29;2977:53;;;3032:9;3043:4;;3049:2;3053:8;2941:130;;;;;;;;;;;;;;-1:-1:-1;;;;;2941:130:29;-1:-1:-1;;;;;2941:130:29;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;2941:130:29;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2941:130:29;;;;-1:-1:-1;;;;;2941:130:29;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2941:130:29;2921:151;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2921:151:29;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;2879:193:29;;;;3089:7;3082:15;;;;3112:41;3131:10;3120:32;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;3120:32:29;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;3120:32:29;;421:4:-1;412:14;;;;3120:32:29;;;;;412:14:-1;3120:32:29;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3120:32:29;;;;;;;;;;;3112:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3112:41:29;;;;;;;;;;;;;;;;;2691:469;;;;;;;;:::o;1679:500::-;1886:12;1900:23;1927:6;-1:-1:-1;;;;;1927:19:29;1983:53;;;2038:9;2049:11;2062:4;;2068:2;2072:8;1947:143;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1947:143:29;-1:-1:-1;;;;;1947:143:29;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1947:143:29;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1947:143:29;;;;-1:-1:-1;;;;;1947:143:29;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;1947:143:29;1927:164;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;1198:475:29;1390:12;1404:23;1431:6;-1:-1:-1;;;;;1431:19:29;1487:53;;;1542:12;1556:4;;1562:2;1566:8;1451:133;;;;;;;;;;;;;;-1:-1:-1;;;;;1451:133:29;-1:-1:-1;;;;;1451:133:29;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;1451:133:29;;;137:4:-1;117:14;;;-1:-1;;113:30;;;157:16;;;26:21;;;22:32;;;6:49;;1451:133:29;;;49:4:-1;25:18;;;61:17;;-1:-1;;;;;182:15;-1:-1;;;;;;1451:133:29;;;179:29:-1;;;;160:49;;1431:154:29;;;;1451:133;;1431:154;;-1:-1:-1;1431:154:29;;-1:-1:-1;25:18;-1:-1;1431:154:29;-1:-1:-1;1431:154:29;;-1:-1:-1;1431:154:29;;-1:-1:-1;25:18;;-1:-1;;58:11;;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;"},"methodIdentifiers":{"swapAMBForExactTokens(address,uint256,address[],address,uint256)":"6c77b023","swapExactAMBForTokens(address,uint256,address[],address,uint256)":"99b32712","swapExactTokensForAMB(address,uint256,uint256,address[],address,uint256)":"5e5cb2f0","swapExactTokensForTokens(address,uint256,uint256,address[],address,uint256)":"375734d9","swapTokensForExactAMB(address,uint256,uint256,address[],address,uint256)":"75730639","swapTokensForExactTokens(address,uint256,uint256,address[],address,uint256)":"22b58410"}},"metadata":"{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"Amounts\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapAMBForExactTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactAMBForTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForAMB\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactAMB\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"contracts/periphery/test/RouterEventEmitter.sol\":\"RouterEventEmitter\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/periphery/interfaces/IAstraRouter01.sol\":{\"keccak256\":\"0x41f94bb4b263f1a0a17e4ca169a7057ecc6d9ff5f575c9047a57e062f7680708\",\"urls\":[\"bzz-raw://d5e155912a41505ccd8702dabc77193fb0bb0601cc0b3efc447aefa98b3a9699\",\"dweb:/ipfs/Qmaev2znL8F5UWbiZJMe124SATkzmrQz4kB5uEeBKyU5iZ\"]},\"contracts/periphery/test/RouterEventEmitter.sol\":{\"keccak256\":\"0x3fd032efac12cc9279b009a0564b540d515aadb48b7bdc7223dd2b6488f7d8fd\",\"urls\":[\"bzz-raw://4ef63379a83f1bdfd03d1cf01adda31f173c1536a5e350994a0b9299907fa43a\",\"dweb:/ipfs/Qmf3tWg6a6fWUXsbLHhy5K63x2REktDyFSWPzCkfirLTcc\"]}},\"version\":1}"}}}}}